diff --git a/docs/404.html b/docs/404.html index 1a1e8fa43..a9795aa02 100644 --- a/docs/404.html +++ b/docs/404.html @@ -20,13 +20,13 @@ - + -

404

Looks like we've got some broken links.
+ - + diff --git a/docs/404.html.gz b/docs/404.html.gz index 9ef7c21f2..a6f166aa4 100644 Binary files a/docs/404.html.gz and b/docs/404.html.gz differ diff --git a/docs/assets/js/10.0b9a5a2a.js.gz b/docs/assets/js/10.0b9a5a2a.js.gz deleted file mode 100644 index a36633c07..000000000 Binary files a/docs/assets/js/10.0b9a5a2a.js.gz and /dev/null differ diff --git a/docs/assets/js/10.0b9a5a2a.js b/docs/assets/js/10.cf659c31.js similarity index 90% rename from docs/assets/js/10.0b9a5a2a.js rename to docs/assets/js/10.cf659c31.js index f2197aa1a..c064fb961 100644 --- a/docs/assets/js/10.0b9a5a2a.js +++ b/docs/assets/js/10.cf659c31.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{434:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},447:function(e,t,r){e.exports=r.p+"assets/img/relationship-types.b24659e3.png"},533:function(e,t,r){e.exports=r.p+"assets/img/competency-configuration.35bf84a0.png"},534:function(e,t,r){e.exports=r.p+"assets/img/add-custom-property.acf0adff.png"},535:function(e,t,r){e.exports=r.p+"assets/img/new-competency-property.f69f0bee.png"},536:function(e,t,r){e.exports=r.p+"assets/img/limit-values-competency.a02a44f8.png"},537:function(e,t,r){e.exports=r.p+"assets/img/limit-values-enabled-competency.a16a768c.png"},538:function(e,t,r){e.exports=r.p+"assets/img/limit-concepts.f9c070d5.png"},539:function(e,t,r){e.exports=r.p+"assets/img/limit-by-type.bec9c441.png"},540:function(e,t,r){e.exports=r.p+"assets/img/competency-limited-by-type.e0f0135c.png"},541:function(e,t,r){e.exports=r.p+"assets/img/competency-properties.ac3e4c6c.png"},542:function(e,t,r){e.exports=r.p+"assets/img/restrict-competency-types.b998c4dd.png"},543:function(e,t,r){e.exports=r.p+"assets/img/permitted-values.f4ebf7f0.png"},544:function(e,t,r){e.exports=r.p+"assets/img/allow-levels.4ccdf171.png"},545:function(e,t,r){e.exports=r.p+"assets/img/restrict-levels.1208a441.png"},546:function(e,t,r){e.exports=r.p+"assets/img/enforced-levels.b2bed16e.png"},547:function(e,t,r){e.exports=r.p+"assets/img/add-level.becb6305.png"},548:function(e,t,r){e.exports=r.p+"assets/img/add-new-level.80367258.png"},549:function(e,t,r){e.exports=r.p+"assets/img/apply-selected.ff45ebb9.png"},550:function(e,t,r){e.exports=r.p+"assets/img/competency-relationships-configuration.7fd522bf.png"},551:function(e,t,r){e.exports=r.p+"assets/img/display-options.f8802fa1.png"},552:function(e,t,r){e.exports=r.p+"assets/img/relationship-types-enabled.61c04858.png"},553:function(e,t,r){e.exports=r.p+"assets/img/manage-relationships.bcd93eed.png"},554:function(e,t,r){e.exports=r.p+"assets/img/resource-alignment-configuration.b8d0b7ed.png"},659:function(e,t,r){"use strict";r.r(t);var s=r(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"competency-property-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-property-configuration"}},[e._v("#")]),e._v(" Competency Property Configuration")]),e._v(" "),t("p",[e._v("Competency properties are the values that can be added, edited, and deleted for competency objects. Default competency properties are "),t("em",[t("strong",[e._v("id, name, description,")])]),e._v(" and "),t("em",[t("strong",[e._v("type")])]),e._v(". Properties added here will be displayed when editing competency level objects in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(533),alt:"Competency Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the competency level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-properties"}},[e._v("#")]),e._v(" Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a competency by clicking the "),t("em",[t("strong",[e._v("add custom competency property")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(534),alt:"Add Custom Competency Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("New Competency Property")])]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(535),alt:"New Competency Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-competency-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-property-fields"}},[e._v("#")]),e._v(" Custom Competency Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[t("strong",[e._v("range/type: Text")])]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("range/type")])]),e._v(" field defines the property type. Certain "),t("em",[e._v("range/types")]),e._v(" allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Competency")]),e._v(" - A CaSS competency ID")])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(").")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The alphanumeric name of the property in the data record.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(434),alt:"One Entry Per Language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(536),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(537),alt:"Limit Values Enabled"}})]),e._v(" "),t("h3",{attrs:{id:"limit-concepts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-concepts"}},[e._v("#")]),e._v(" Limit Concepts")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=SKOS Concept")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type SKOS Concept")])]),e._v(", you can limit the concepts to apply to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Concepts")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Concept Schemes or Taxonomies that match your search. Select one or more of the Concept Schemes or Taxonomies. Each selected item will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(538),alt:"Limit Concepts"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type SKOS Concept with limited concepts, only concepts defined within the Limit Concepts configuration will be available to select from.")]),e._v(" "),t("h3",{attrs:{id:"limit-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-types"}},[e._v("#")]),e._v(" Limit Types")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Competency")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Competency")])]),e._v(", you can limit the available competencies to apply to the property. To do this, you must first have Competency Types defined in the configuration. [To add Competency Types, please refer to Restrict Competency Types (#restrict-competency-types). Toggle the "),t("em",[t("strong",[e._v("Limit By Type")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Competency Types that match your search. Select one or more of the Competency Types. Each selected Competency Type will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(539),alt:"Limit By Type"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type Competency, only values with the Competency Type defined in the Limit By Type configuration will be available in the search.")]),e._v(" "),t("p",[e._v('In the example below, "Critical Skill" is a property of type Competency. In the configuration, it is limited by type "Major". The two competencies listed in the search below, "Emergency Response Preparedness" and "Threat Awareness", both have the Competency Type of "Major" applied to them and therefore show up as options to apply to "Critical Skill".\nThe value of the "Critical Skill" property will be set to the id of the competency selected from the search.')]),e._v(" "),t("p",[t("img",{attrs:{src:r(540),alt:"Competency Limited By Type"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-competency-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-competency-property"}},[e._v("#")]),e._v(" Applying the Custom Competency Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-competency-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Competency Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(541),alt:"Delete Custom Properties"}})]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-types"}},[e._v("#")]),e._v(" Restrict Competency Types")]),e._v(" "),t("p",[e._v("By default, values for the competency "),t("em",[t("strong",[e._v("type")])]),e._v(" property are not limited. By toggling this setting, competency types can be restricted to a list of predetermined values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(542),alt:"Restrict Competency Types"}})]),e._v(" "),t("p",[e._v("For each entry in the permitted values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the type value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the type is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(543),alt:"Permitted Values Table"}})]),e._v(" "),t("h2",{attrs:{id:"competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-levels"}},[e._v("#")]),e._v(" Competency Levels")]),e._v(" "),t("p",[e._v("By default, the level property is enabled for competency objects created in the CaSS Authoring Tool. Levels can be disabled by toggling the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" switch.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(544),alt:"Allow Levels"}})]),e._v(" "),t("h2",{attrs:{id:"level-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level-property-fields"}},[e._v("#")]),e._v(" Level Property Fields")]),e._v(" "),t("p",[e._v("Level property fields can be modified from the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" section of the competency configuration settings:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for levels")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of the levels property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which levels are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("level display priority")])]),e._v(" - priority in which levels are displayed in form inputs (primary, secondary, or tertiary)")])]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-levels"}},[e._v("#")]),e._v(" Restrict Competency Levels")]),e._v(" "),t("p",[e._v("By default, levels in CaSS can be created during framework/competency editing. To restrict competencies that allow levels to a limited selection, toggle the "),t("em",[t("strong",[e._v("restrict level values")])]),e._v(" switch and click the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(545),alt:"Restrict Competency Levels"}})]),e._v(" "),t("h3",{attrs:{id:"manage-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manage-competency-levels"}},[e._v("#")]),e._v(" Manage Competency Levels")]),e._v(" "),t("p",[e._v("Clicking the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button displays the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue screen. From here, you can select from all existing levels in CaSS or create more appropriate levels. Any previously selected levels will already be checked and can be removed from the enforced levels list by unchecking the appropriate item.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(546),alt:"Enforced Levels"}})]),e._v(" "),t("h3",{attrs:{id:"add-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#add-competency-levels"}},[e._v("#")]),e._v(" Add Competency Levels")]),e._v(" "),t("p",[e._v("To add a new level to the available level list, click on the "),t("em",[t("strong",[e._v("add level")])]),e._v(" button in the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue window.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(547),alt:"Add Levels"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("add new level")])]),e._v(" dialogue is open. Enter the new level's "),t("em",[t("strong",[e._v("name")])]),e._v(" (and optionally the new level's "),t("em",[t("strong",[e._v("description")])]),e._v(" ). Clicking the "),t("em",[t("strong",[e._v("save new level")])]),e._v(" button on the bottom right corner of the dialogue will create this level in CaSS and return you to the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(548),alt:"Add New Level Modal"}})]),e._v(" "),t("h3",{attrs:{id:"apply-selected-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#apply-selected-competency-levels"}},[e._v("#")]),e._v(" Apply Selected Competency Levels")]),e._v(" "),t("p",[e._v("Upon selecting the desired enforced levels, click the "),t("em",[t("strong",[e._v("apply selected")])]),e._v(" button at the bottom right of the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialog window to apply the enforced levels to competencies.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(549),alt:"Select Enforced Levels"}})]),e._v(" "),t("h2",{attrs:{id:"competency-relationships-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-relationships-configuration"}},[e._v("#")]),e._v(" Competency Relationships Configuration")]),e._v(" "),t("p",[e._v("Relationships can be added as properties on competencies to define how competencies within a framework relate to each other. Enabled relationships will be available in the property drop down when editing competencies in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(550),alt:"Competnecy Relationship Configuration"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-display-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-display-options"}},[e._v("#")]),e._v(" Relationship Display Options")]),e._v(" "),t("p",[e._v("General relationship display options can be configured from the "),t("em",[t("strong",[e._v("display options section")])]),e._v(". These include:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which relationships are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("relationships display priority")])]),e._v(" - priority in which relationships are displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(")")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(551),alt:"Relationship Display Options"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-type-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-type-management"}},[e._v("#")]),e._v(" Relationship Type Management")]),e._v(" "),t("p",[e._v("The types of relationships available to competencies using the configuration can be managed under the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section. Relationship types can be "),t("em",[e._v("enabled, disabled,")]),e._v(" and "),t("em",[e._v("relabeled")]),e._v(".")]),e._v(" "),t("p",[e._v("By default, the following relationship types are enabled:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("isEnabledBy")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("requires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("desires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("narrows")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isRelatedTo")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isEquivalentTo")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(447),alt:"Relationship Types Management"}})]),e._v(" "),t("p",[e._v("To reduce screen clutter, the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section only displays "),t("em",[e._v("enabled")]),e._v(" relationship types. Currently, enabled relationships can be disabled using the corresponding "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the relationship entry.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(552),alt:"Relationship Types Enabled Toggle"}})]),e._v(" "),t("p",[e._v("To add other relationship types to a configuration, click on the "),t("em",[t("strong",[e._v("manage relationships")])]),e._v(" button on the upper right of the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(553),alt:"Manage Relationships"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("manage relationship types")])]),e._v(" dialogue window is open. From this screen, all relationships type currently available in CaSS are categorized and displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(447),alt:"Manage Relationship Types"}})]),e._v(" "),t("p",[e._v("The available relationship types are as follows:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Default Relationships")]),e._v(" "),t("ul",[t("li",[e._v("isEnabledBy")]),e._v(" "),t("li",[e._v("requires")]),e._v(" "),t("li",[e._v("desires")]),e._v(" "),t("li",[e._v("narrows")]),e._v(" "),t("li",[e._v("isRelatedTo")]),e._v(" "),t("li",[e._v("isEquivalentTo")]),e._v(" "),t("li",[e._v("broadens")]),e._v(" "),t("li",[e._v("enables")])])]),e._v(" "),t("li",[t("strong",[e._v("Achievement Standards Network Relationships")]),e._v(" "),t("ul",[t("li",[e._v("majorRelated")]),e._v(" "),t("li",[e._v("minorRelated")])])]),e._v(" "),t("li",[t("strong",[e._v("GEMQ")]),e._v(" "),t("ul",[t("li",[e._v("hasChild")]),e._v(" "),t("li",[e._v("isChildOf")])])]),e._v(" "),t("li",[t("strong",[e._v("Other")]),e._v(" "),t("ul",[t("li",[e._v("isSimilarTo")]),e._v(" "),t("li",[e._v("isPartiallySameAs")])])])]),e._v(" "),t("p",[e._v("To enable or disable a relationship type for the configuration, toggle the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the corresponding type and click the "),t("em",[t("strong",[e._v("ok")])]),e._v(" button.")]),e._v(" "),t("h2",{attrs:{id:"resource-alignment-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resource-alignment-configuration"}},[e._v("#")]),e._v(" Resource Alignment Configuration")]),e._v(" "),t("p",[e._v("Resource alignment terms are used to map resources such as learning material, courses, and other content to competencies in CAT. If enabled, the alignment type property will show up in the framework editor when aligning competencies to resources.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(554),alt:"Resource Alignemnt Configuration"}})]),e._v(" "),t("p",[e._v("Currently, the CaSS Authoring Tool supports four types of resource alignments:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("teaches")]),e._v(" - The item being described is intended to help a person learn the competency or learning outcome defined by the referenced term")]),e._v(" "),t("li",[t("strong",[e._v("assesses")]),e._v(" - The learning resource being described may be used to assess the competency being referenced")]),e._v(" "),t("li",[t("strong",[e._v("requires")]),e._v(" - The competency being referenced is required in order for effective outcome of the learning resource being described")]),e._v(" "),t("li",[t("strong",[e._v("desires")]),e._v(" - Knowledge of the learning resource being described is desired by the competency being referenced")])]),e._v(" "),t("p",[e._v("Each alignment type can be enabled and disabled by toggling the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of each corresponding item.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{434:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},446:function(e,t,r){e.exports=r.p+"assets/img/relationship-types.b24659e3.png"},505:function(e,t,r){e.exports=r.p+"assets/img/competency-configuration.35bf84a0.png"},506:function(e,t,r){e.exports=r.p+"assets/img/add-custom-property.acf0adff.png"},507:function(e,t,r){e.exports=r.p+"assets/img/new-competency-property.f69f0bee.png"},508:function(e,t,r){e.exports=r.p+"assets/img/limit-values-competency.a02a44f8.png"},509:function(e,t,r){e.exports=r.p+"assets/img/limit-values-enabled-competency.a16a768c.png"},510:function(e,t,r){e.exports=r.p+"assets/img/limit-concepts.f9c070d5.png"},511:function(e,t,r){e.exports=r.p+"assets/img/limit-by-type.bec9c441.png"},512:function(e,t,r){e.exports=r.p+"assets/img/competency-limited-by-type.e0f0135c.png"},513:function(e,t,r){e.exports=r.p+"assets/img/competency-properties.ac3e4c6c.png"},514:function(e,t,r){e.exports=r.p+"assets/img/restrict-competency-types.b998c4dd.png"},515:function(e,t,r){e.exports=r.p+"assets/img/permitted-values.f4ebf7f0.png"},516:function(e,t,r){e.exports=r.p+"assets/img/allow-levels.4ccdf171.png"},517:function(e,t,r){e.exports=r.p+"assets/img/restrict-levels.1208a441.png"},518:function(e,t,r){e.exports=r.p+"assets/img/enforced-levels.b2bed16e.png"},519:function(e,t,r){e.exports=r.p+"assets/img/add-level.becb6305.png"},520:function(e,t,r){e.exports=r.p+"assets/img/add-new-level.80367258.png"},521:function(e,t,r){e.exports=r.p+"assets/img/apply-selected.ff45ebb9.png"},522:function(e,t,r){e.exports=r.p+"assets/img/competency-relationships-configuration.7fd522bf.png"},523:function(e,t,r){e.exports=r.p+"assets/img/display-options.f8802fa1.png"},524:function(e,t,r){e.exports=r.p+"assets/img/relationship-types-enabled.61c04858.png"},525:function(e,t,r){e.exports=r.p+"assets/img/manage-relationships.bcd93eed.png"},526:function(e,t,r){e.exports=r.p+"assets/img/resource-alignment-configuration.b8d0b7ed.png"},656:function(e,t,r){"use strict";r.r(t);var s=r(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"competency-property-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-property-configuration"}},[e._v("#")]),e._v(" Competency Property Configuration")]),e._v(" "),t("p",[e._v("Competency properties are the values that can be added, edited, and deleted for competency objects. Default competency properties are "),t("em",[t("strong",[e._v("id, name, description,")])]),e._v(" and "),t("em",[t("strong",[e._v("type")])]),e._v(". Properties added here will be displayed when editing competency level objects in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(505),alt:"Competency Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the competency level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-properties"}},[e._v("#")]),e._v(" Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a competency by clicking the "),t("em",[t("strong",[e._v("add custom competency property")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(506),alt:"Add Custom Competency Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("New Competency Property")])]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(507),alt:"New Competency Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-competency-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-competency-property-fields"}},[e._v("#")]),e._v(" Custom Competency Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[t("strong",[e._v("range/type: Text")])]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("range/type")])]),e._v(" field defines the property type. Certain "),t("em",[e._v("range/types")]),e._v(" allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Competency")]),e._v(" - A CaSS competency ID")])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(").")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The alphanumeric name of the property in the data record.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(434),alt:"One Entry Per Language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(508),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(509),alt:"Limit Values Enabled"}})]),e._v(" "),t("h3",{attrs:{id:"limit-concepts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-concepts"}},[e._v("#")]),e._v(" Limit Concepts")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=SKOS Concept")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type SKOS Concept")])]),e._v(", you can limit the concepts to apply to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Concepts")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Concept Schemes or Taxonomies that match your search. Select one or more of the Concept Schemes or Taxonomies. Each selected item will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(510),alt:"Limit Concepts"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type SKOS Concept with limited concepts, only concepts defined within the Limit Concepts configuration will be available to select from.")]),e._v(" "),t("h3",{attrs:{id:"limit-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-types"}},[e._v("#")]),e._v(" Limit Types")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Competency")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Competency")])]),e._v(", you can limit the available competencies to apply to the property. To do this, you must first have Competency Types defined in the configuration. [To add Competency Types, please refer to Restrict Competency Types (#restrict-competency-types). Toggle the "),t("em",[t("strong",[e._v("Limit By Type")])]),e._v(" field on and begin typing in the search box. A dropdown list will contain existing Competency Types that match your search. Select one or more of the Competency Types. Each selected Competency Type will appear above the search box and can be removed again if desired.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(511),alt:"Limit By Type"}})]),e._v(" "),t("p",[e._v("When searching for a value to apply to a property of type Competency, only values with the Competency Type defined in the Limit By Type configuration will be available in the search.")]),e._v(" "),t("p",[e._v('In the example below, "Critical Skill" is a property of type Competency. In the configuration, it is limited by type "Major". The two competencies listed in the search below, "Emergency Response Preparedness" and "Threat Awareness", both have the Competency Type of "Major" applied to them and therefore show up as options to apply to "Critical Skill".\nThe value of the "Critical Skill" property will be set to the id of the competency selected from the search.')]),e._v(" "),t("p",[t("img",{attrs:{src:r(512),alt:"Competency Limited By Type"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-competency-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-competency-property"}},[e._v("#")]),e._v(" Applying the Custom Competency Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-competency-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-competency-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Competency Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Competency Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(513),alt:"Delete Custom Properties"}})]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-types"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-types"}},[e._v("#")]),e._v(" Restrict Competency Types")]),e._v(" "),t("p",[e._v("By default, values for the competency "),t("em",[t("strong",[e._v("type")])]),e._v(" property are not limited. By toggling this setting, competency types can be restricted to a list of predetermined values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(514),alt:"Restrict Competency Types"}})]),e._v(" "),t("p",[e._v("For each entry in the permitted values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the type value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the type is selected by the user\n"),t("ul",[t("li",[e._v("Only alphanumerics are allowed for field values")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(515),alt:"Permitted Values Table"}})]),e._v(" "),t("h2",{attrs:{id:"competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-levels"}},[e._v("#")]),e._v(" Competency Levels")]),e._v(" "),t("p",[e._v("By default, the level property is enabled for competency objects created in the CaSS Authoring Tool. Levels can be disabled by toggling the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" switch.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(516),alt:"Allow Levels"}})]),e._v(" "),t("h2",{attrs:{id:"level-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level-property-fields"}},[e._v("#")]),e._v(" Level Property Fields")]),e._v(" "),t("p",[e._v("Level property fields can be modified from the "),t("em",[t("strong",[e._v("allow levels")])]),e._v(" section of the competency configuration settings:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for levels")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of the levels property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which levels are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("level display priority")])]),e._v(" - priority in which levels are displayed in form inputs (primary, secondary, or tertiary)")])]),e._v(" "),t("h2",{attrs:{id:"restrict-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restrict-competency-levels"}},[e._v("#")]),e._v(" Restrict Competency Levels")]),e._v(" "),t("p",[e._v("By default, levels in CaSS can be created during framework/competency editing. To restrict competencies that allow levels to a limited selection, toggle the "),t("em",[t("strong",[e._v("restrict level values")])]),e._v(" switch and click the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(517),alt:"Restrict Competency Levels"}})]),e._v(" "),t("h3",{attrs:{id:"manage-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#manage-competency-levels"}},[e._v("#")]),e._v(" Manage Competency Levels")]),e._v(" "),t("p",[e._v("Clicking the "),t("em",[t("strong",[e._v("manage levels")])]),e._v(" button displays the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue screen. From here, you can select from all existing levels in CaSS or create more appropriate levels. Any previously selected levels will already be checked and can be removed from the enforced levels list by unchecking the appropriate item.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(518),alt:"Enforced Levels"}})]),e._v(" "),t("h3",{attrs:{id:"add-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#add-competency-levels"}},[e._v("#")]),e._v(" Add Competency Levels")]),e._v(" "),t("p",[e._v("To add a new level to the available level list, click on the "),t("em",[t("strong",[e._v("add level")])]),e._v(" button in the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue window.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(519),alt:"Add Levels"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("add new level")])]),e._v(" dialogue is open. Enter the new level's "),t("em",[t("strong",[e._v("name")])]),e._v(" (and optionally the new level's "),t("em",[t("strong",[e._v("description")])]),e._v(" ). Clicking the "),t("em",[t("strong",[e._v("save new level")])]),e._v(" button on the bottom right corner of the dialogue will create this level in CaSS and return you to the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialogue.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(520),alt:"Add New Level Modal"}})]),e._v(" "),t("h3",{attrs:{id:"apply-selected-competency-levels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#apply-selected-competency-levels"}},[e._v("#")]),e._v(" Apply Selected Competency Levels")]),e._v(" "),t("p",[e._v("Upon selecting the desired enforced levels, click the "),t("em",[t("strong",[e._v("apply selected")])]),e._v(" button at the bottom right of the "),t("em",[t("strong",[e._v("select enforced levels")])]),e._v(" dialog window to apply the enforced levels to competencies.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(521),alt:"Select Enforced Levels"}})]),e._v(" "),t("h2",{attrs:{id:"competency-relationships-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-relationships-configuration"}},[e._v("#")]),e._v(" Competency Relationships Configuration")]),e._v(" "),t("p",[e._v("Relationships can be added as properties on competencies to define how competencies within a framework relate to each other. Enabled relationships will be available in the property drop down when editing competencies in the framework editor.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(522),alt:"Competnecy Relationship Configuration"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-display-options"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-display-options"}},[e._v("#")]),e._v(" Relationship Display Options")]),e._v(" "),t("p",[e._v("General relationship display options can be configured from the "),t("em",[t("strong",[e._v("display options section")])]),e._v(". These include:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which relationships are displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("relationships display priority")])]),e._v(" - priority in which relationships are displayed in form inputs ("),t("em",[e._v("primary, secondary, or tertiary")]),e._v(")")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(523),alt:"Relationship Display Options"}})]),e._v(" "),t("h3",{attrs:{id:"relationship-type-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relationship-type-management"}},[e._v("#")]),e._v(" Relationship Type Management")]),e._v(" "),t("p",[e._v("The types of relationships available to competencies using the configuration can be managed under the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section. Relationship types can be "),t("em",[e._v("enabled, disabled,")]),e._v(" and "),t("em",[e._v("relabeled")]),e._v(".")]),e._v(" "),t("p",[e._v("By default, the following relationship types are enabled:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("isEnabledBy")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("requires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("desires")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("narrows")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isRelatedTo")])])]),e._v(" "),t("li",[t("em",[t("strong",[e._v("isEquivalentTo")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(446),alt:"Relationship Types Management"}})]),e._v(" "),t("p",[e._v("To reduce screen clutter, the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section only displays "),t("em",[e._v("enabled")]),e._v(" relationship types. Currently, enabled relationships can be disabled using the corresponding "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the relationship entry.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(524),alt:"Relationship Types Enabled Toggle"}})]),e._v(" "),t("p",[e._v("To add other relationship types to a configuration, click on the "),t("em",[t("strong",[e._v("manage relationships")])]),e._v(" button on the upper right of the "),t("em",[t("strong",[e._v("relationship types")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(525),alt:"Manage Relationships"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("manage relationship types")])]),e._v(" dialogue window is open. From this screen, all relationships type currently available in CaSS are categorized and displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(446),alt:"Manage Relationship Types"}})]),e._v(" "),t("p",[e._v("The available relationship types are as follows:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Default Relationships")]),e._v(" "),t("ul",[t("li",[e._v("isEnabledBy")]),e._v(" "),t("li",[e._v("requires")]),e._v(" "),t("li",[e._v("desires")]),e._v(" "),t("li",[e._v("narrows")]),e._v(" "),t("li",[e._v("isRelatedTo")]),e._v(" "),t("li",[e._v("isEquivalentTo")]),e._v(" "),t("li",[e._v("broadens")]),e._v(" "),t("li",[e._v("enables")])])]),e._v(" "),t("li",[t("strong",[e._v("Achievement Standards Network Relationships")]),e._v(" "),t("ul",[t("li",[e._v("majorRelated")]),e._v(" "),t("li",[e._v("minorRelated")])])]),e._v(" "),t("li",[t("strong",[e._v("GEMQ")]),e._v(" "),t("ul",[t("li",[e._v("hasChild")]),e._v(" "),t("li",[e._v("isChildOf")])])]),e._v(" "),t("li",[t("strong",[e._v("Other")]),e._v(" "),t("ul",[t("li",[e._v("isSimilarTo")]),e._v(" "),t("li",[e._v("isPartiallySameAs")])])])]),e._v(" "),t("p",[e._v("To enable or disable a relationship type for the configuration, toggle the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of the corresponding type and click the "),t("em",[t("strong",[e._v("ok")])]),e._v(" button.")]),e._v(" "),t("h2",{attrs:{id:"resource-alignment-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#resource-alignment-configuration"}},[e._v("#")]),e._v(" Resource Alignment Configuration")]),e._v(" "),t("p",[e._v("Resource alignment terms are used to map resources such as learning material, courses, and other content to competencies in CAT. If enabled, the alignment type property will show up in the framework editor when aligning competencies to resources.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(526),alt:"Resource Alignemnt Configuration"}})]),e._v(" "),t("p",[e._v("Currently, the CaSS Authoring Tool supports four types of resource alignments:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("teaches")]),e._v(" - The item being described is intended to help a person learn the competency or learning outcome defined by the referenced term")]),e._v(" "),t("li",[t("strong",[e._v("assesses")]),e._v(" - The learning resource being described may be used to assess the competency being referenced")]),e._v(" "),t("li",[t("strong",[e._v("requires")]),e._v(" - The competency being referenced is required in order for effective outcome of the learning resource being described")]),e._v(" "),t("li",[t("strong",[e._v("desires")]),e._v(" - Knowledge of the learning resource being described is desired by the competency being referenced")])]),e._v(" "),t("p",[e._v("Each alignment type can be enabled and disabled by toggling the "),t("em",[t("strong",[e._v("enabled")])]),e._v(" switch to the right of each corresponding item.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/10.cf659c31.js.gz b/docs/assets/js/10.cf659c31.js.gz new file mode 100644 index 000000000..27c4bd113 Binary files /dev/null and b/docs/assets/js/10.cf659c31.js.gz differ diff --git a/docs/assets/js/11.528b58ed.js.gz b/docs/assets/js/11.528b58ed.js.gz deleted file mode 100644 index e1ad7c388..000000000 Binary files a/docs/assets/js/11.528b58ed.js.gz and /dev/null differ diff --git a/docs/assets/js/11.528b58ed.js b/docs/assets/js/11.b3ce6cf9.js similarity index 82% rename from docs/assets/js/11.528b58ed.js rename to docs/assets/js/11.b3ce6cf9.js index cdad4fefd..5252a5ee3 100644 --- a/docs/assets/js/11.528b58ed.js +++ b/docs/assets/js/11.b3ce6cf9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{432:function(e,t,a){e.exports=a.p+"assets/img/filter-frameworks-button.e6c645ee.png"},433:function(e,t,a){e.exports=a.p+"assets/img/filter-and-sort-panel.17620163.png"},483:function(e,t,a){e.exports=a.p+"assets/img/frameworks-page.7c414a94.png"},484:function(e,t,a){e.exports=a.p+"assets/img/search-apply-to.5f3c31e9.png"},485:function(e,t,a){e.exports=a.p+"assets/img/search-field-types.4952e58f.png"},486:function(e,t,a){e.exports=a.p+"assets/img/framework-information.96bc1382.png"},487:function(e,t,a){e.exports=a.p+"assets/img/create-new-framework.ec13de7d.png"},488:function(e,t,a){e.exports=a.p+"assets/img/add-competencies.824a430d.png"},489:function(e,t,a){e.exports=a.p+"assets/img/add-children-competencies.acdce853.png"},490:function(e,t,a){e.exports=a.p+"assets/img/edit-competencies.97631d75.png"},491:function(e,t,a){e.exports=a.p+"assets/img/edit-modal.ffa034d8.png"},492:function(e,t,a){e.exports=a.p+"assets/img/add-property.c64cced1.png"},493:function(e,t,a){e.exports=a.p+"assets/img/edit-multiple-competencies.249cc34f.png"},494:function(e,t,a){e.exports=a.p+"assets/img/adding-property-to-multiple.26b5968f.png"},495:function(e,t,a){e.exports=a.p+"assets/img/undo-button.c8cb7762.png"},496:function(e,t,a){e.exports=a.p+"assets/img/drag-and-drop.b8547df3.png"},497:function(e,t,a){e.exports=a.p+"assets/img/cut-copy-paste.948815df.png"},498:function(e,t,a){e.exports=a.p+"assets/img/setting-a-framework-configuration.d432089d.png"},499:function(e,t,a){e.exports=a.p+"assets/img/manage-framework-configuration.3b043c9a.png"},500:function(e,t,a){e.exports=a.p+"assets/img/manage-users-button.7e4db1a3.png"},501:function(e,t,a){e.exports=a.p+"assets/img/share-framework-and-manage-users.dd1d4622.png"},502:function(e,t,a){e.exports=a.p+"assets/img/property-details.f97b720c.png"},654:function(e,t,a){"use strict";a.r(t);var o=a(69),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"finding-and-editing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#finding-and-editing"}},[e._v("#")]),e._v(" Finding and Editing")]),e._v(" "),t("p",[e._v("Competency frameworks can be viewed and managed in CaSS Authoring Tools by navigating to the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" page. The Frameworks page can be visited by clicking on the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" button on the left sidebar highlighted by the red box in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(483),alt:"CAT Competency Framework Management - Frameworks Page"}})]),e._v(" "),t("p",[e._v("On this page, frameworks are shown with their names in bold. Beneath the\nname, you can see how many competencies are in the framework, when it\nwas created and last modified. If you have permission to edit the\nframework, it will say “"),t("em",[e._v("Editable")]),e._v("”.")]),e._v(" "),t("h2",{attrs:{id:"sorting-and-filtering-frameworks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sorting-and-filtering-frameworks"}},[e._v("#")]),e._v(" Sorting and Filtering Frameworks")]),e._v(" "),t("p",[e._v("You can sort and filter the list of frameworks by clicking the filter\nbutton next to the search bar. The button next to it clears any filters\nyou’ve applied.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(432),alt:"CAT Competency Framework Management - Filter Button"}})]),e._v(" "),t("p",[e._v("The filter button will open up a side panel to the right of the\nframework list with options to sort, filter, and apply your search term\nto various fields.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(433),alt:"CAT Competency and Framework Management - Filter and Sort Panel"}})]),e._v(" "),t("p",[e._v("The filter options under "),t("em",[t("strong",[e._v("Apply search term to")])]),e._v(" are available based on the type of each field wtihin the current configuration (either browser default or instance default).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(484),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[e._v("Fields for frameworks, competencies, and directories that are of the type "),t("em",[t("strong",[e._v("Text")])]),e._v(" or "),t("em",[t("strong",[e._v("Lang-String")])]),e._v(" are made available to filter on when searching. These settings are applied when creating or editing fields in Configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(485),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[t("em",[e._v("(Advanced)")]),e._v(" The configuration settings of "),t("code",[e._v("ceasnDataFields=true")]),e._v(" or "),t("code",[e._v("tlaProfile=true")]),e._v(" override browser default or instance default configurations when listing available fields to filter on.")]),e._v(" "),t("h2",{attrs:{id:"opening-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#opening-a-framework"}},[e._v("#")]),e._v(" Opening a Framework")]),e._v(" "),t("p",[e._v("Double-click on a framework to open the framework.")]),e._v(" "),t("h2",{attrs:{id:"viewing-a-framework-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-a-framework-in-more-detail"}},[e._v("#")]),e._v(" Viewing a Framework in More Detail")]),e._v(" "),t("p",[e._v("Single-click on a framework to view an Information panel with more details and options for the framework.")]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("Information")])]),e._v(" about the framework will show on a side panel to the right of the directory list.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(486),alt:"CAT Competency and Framework Management - Information Panel"}})]),e._v(" "),t("h2",{attrs:{id:"creating-a-new-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-competency-framework"}},[e._v("#")]),e._v(" Creating a New Competency Framework")]),e._v(" "),t("p",[e._v("A new competency framework can be created within CaSS Authoring Tools by pressing the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button at the top of the framework management page.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(487),alt:"CAT Competency Framework Management - Create New Framework"}})]),e._v(" "),t("p",[e._v("When you click on the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button to create a new competency framework, you will be required to enter a "),t("em",[e._v("Framework Name")]),e._v(" and "),t("em",[e._v("Framework description")]),e._v(" to your new competency framework. Additional properties can be added to a competency framework that are controlled by CaSS Authoring Tools’ configuration settings. For more information about configuration settings and managing the properties of competency frameworks, see the "),t("em",[t("strong",[e._v("Custom Framework Properties")])]),e._v(" section of this user guide under "),t("em",[t("strong",[e._v("Competency Framework and Competency Configuration")])]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"adding-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-competencies"}},[e._v("#")]),e._v(" Adding Competencies")]),e._v(" "),t("p",[e._v("To add competencies to your framework, click the "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button below the framework details.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(488),alt:"CAT Competency Framework Management - Add Competencies"}})]),e._v(" "),t("p",[e._v("You can construct a hierarchy of competencies by checking the box to the left of a competency. The "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button text will change to "),t("em",[t("strong",[e._v("add child")])]),e._v(", which you can click to place a competency underneath the one you’ve checked.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(489),alt:"CAT Competency Framework Management - Add Children to Competencies"}})]),e._v(" "),t("h2",{attrs:{id:"editing-frameworks-and-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-frameworks-and-competencies"}},[e._v("#")]),e._v(" Editing Frameworks and Competencies")]),e._v(" "),t("p",[e._v("To edit a single competency or framework, hover over the item you want to edit and an edit icon will appear. Click the icon highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(490),alt:"CAT Competency Framework Management - Edit"}})]),e._v(" "),t("p",[e._v("A modal will appear and you can edit the framework or competency’s properties. This modal also allows you to delete the competency or framework, remove a competency from the current framework without deleting it, and export the object. Click "),t("em",[t("strong",[e._v("done")])]),e._v(" when you’ve finished making changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(491),alt:"CAT Competency Framework Management - Edit Modal"}})]),e._v(" "),t("p",[e._v("You can add new properties to your object from here too by clicking the "),t("em",[t("strong",[e._v("add property")])]),e._v(" button at the bottom of the modal. You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter in the value, and click "),t("em",[t("strong",[e._v("save property")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(492),alt:"CAT Competency Framework Management - Add a Property"}})]),e._v(" "),t("p",[e._v("If there’s a property you’d like to add to multiple competencies, use the checkboxes to select the competencies you want to edit and click "),t("em",[t("strong",[e._v("edit multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(493),alt:"CAT Competency Framework Management - Edit Multiple Competencies"}})]),e._v(" "),t("p",[e._v("You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter the value, and click "),t("em",[t("strong",[e._v("apply to multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(494),alt:"CAT Competency Framework Management - Adding Property to Multiple Competencies"}})]),e._v(" "),t("p",[e._v("If you make a mistake while editing, click the "),t("em",[t("strong",[e._v("undo")])]),e._v(" button in the bar at the top of the page to revert your most recent changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(495),alt:"CAT Competency Framework Management - Undo Button"}})]),e._v(" "),t("h3",{attrs:{id:"changing-competency-hierarchy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-competency-hierarchy"}},[e._v("#")]),e._v(" Changing Competency Hierarchy")]),e._v(" "),t("p",[e._v("There are several ways to move competencies around in the hierarchy. You can drag and drop the competency to the spot you’d like to move it to by hovering over the competency. The icon highlighted in the image below will appear and you can click on it, hold down, and drag the competency to the appropriate position.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(496),alt:"CAT Competency Framework Management - Drag and Drop"}})]),e._v(" "),t("p",[e._v("You can also move a competency by selecting its checkbox. Click the cut or copy icon highlighted in red in the image below, select another competency, and click the paste icon.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(497),alt:"CAT Competency Framework Management - Cut, Copy, Paste"}})]),e._v(" "),t("p",[e._v("With one competency selected, you can move it with keyboard commands as well. You can cut, copy and paste, or use the arrow keys to move it to the position you want.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Tab")]),e._v(" - Switch focus between elements on the page")]),e._v(" "),t("li",[t("strong",[e._v("Space")]),e._v(" - Select the element currently in focus")]),e._v(" "),t("li",[t("strong",[e._v("Shift + X")]),e._v(" - Cut competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + C")]),e._v(" - Cut and copy competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + V")]),e._v(" - Drop competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ↑, Shift + ↓")]),e._v(" - Move competency up/down in the list.")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ←, Shift + →")]),e._v(" - Move competency indent/outdent in the list")])]),e._v(" "),t("h2",{attrs:{id:"setting-a-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-a-configuration"}},[e._v("#")]),e._v(" Setting a Configuration")]),e._v(" "),t("p",[e._v("Configurations control which properties you can edit and display within a particular framework, and what types of values they can have. If youdon’t specify a configuration for your framework, the browser, instance, or CaSS default will control the properties. If you want a framework to have a different configuration, you can set one by clicking the\nframework configuration button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(498),alt:"CAT Competency Framework Management - Setting a Framework Configuration"}})]),e._v(" "),t("p",[e._v("This will open up a panel with a list of available configurations to apply. Click "),t("em",[t("strong",[e._v("set as framework default")])]),e._v(" next to the configuration you want.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(499),alt:"CAT Competency Framework Management - Manage Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"managing-users-and-sharing-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing-a-framework"}},[e._v("#")]),e._v(" Managing Users and Sharing a Framework")]),e._v(" "),t("p",[e._v("To control who can view and edit a framework you own, click the "),t("em",[t("strong",[e._v("manage users")])]),e._v(" button highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(500),alt:"CAT Competency Framework Management - Manage Users Button"}})]),e._v(" "),t("p",[e._v("You can see who the admins and viewers of your framework are, and add or remove users and organizations. This view also has a shareable link to your framework that you can copy to your clipboard and give to someone else.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(501),alt:"CAT Competency Framework Management - Share Framework and Manage Users"}})]),e._v(" "),t("h2",{attrs:{id:"viewing-frameworks-and-competencies-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-frameworks-and-competencies-in-more-detail"}},[e._v("#")]),e._v(" Viewing Frameworks and Competencies in More Detail")]),e._v(" "),t("p",[e._v("By default, only primary properties are shown on a framework and competencies. To see some additional properties, click "),t("em",[t("strong",[e._v("secondary")])]),e._v(" in the panel at the top of the screen. This will show all the properties assigned as "),t("em",[e._v("primary")]),e._v(" and "),t("em",[e._v("secondary")]),e._v(" in the configuration that have values. To see all properties that have values, click on "),t("em",[t("strong",[e._v("tertiary")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(502),alt:"CAT Competency Framework Management - Property Details"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{432:function(e,t,a){e.exports=a.p+"assets/img/filter-frameworks-button.e6c645ee.png"},433:function(e,t,a){e.exports=a.p+"assets/img/filter-and-sort-panel.17620163.png"},485:function(e,t,a){e.exports=a.p+"assets/img/frameworks-page.7c414a94.png"},486:function(e,t,a){e.exports=a.p+"assets/img/search-apply-to.5f3c31e9.png"},487:function(e,t,a){e.exports=a.p+"assets/img/search-field-types.4952e58f.png"},488:function(e,t,a){e.exports=a.p+"assets/img/framework-information.96bc1382.png"},489:function(e,t,a){e.exports=a.p+"assets/img/create-new-framework.ec13de7d.png"},490:function(e,t,a){e.exports=a.p+"assets/img/add-competencies.824a430d.png"},491:function(e,t,a){e.exports=a.p+"assets/img/add-children-competencies.acdce853.png"},492:function(e,t,a){e.exports=a.p+"assets/img/edit-competencies.97631d75.png"},493:function(e,t,a){e.exports=a.p+"assets/img/edit-modal.ffa034d8.png"},494:function(e,t,a){e.exports=a.p+"assets/img/add-property.c64cced1.png"},495:function(e,t,a){e.exports=a.p+"assets/img/edit-multiple-competencies.249cc34f.png"},496:function(e,t,a){e.exports=a.p+"assets/img/adding-property-to-multiple.26b5968f.png"},497:function(e,t,a){e.exports=a.p+"assets/img/undo-button.c8cb7762.png"},498:function(e,t,a){e.exports=a.p+"assets/img/drag-and-drop.b8547df3.png"},499:function(e,t,a){e.exports=a.p+"assets/img/cut-copy-paste.948815df.png"},500:function(e,t,a){e.exports=a.p+"assets/img/setting-a-framework-configuration.d432089d.png"},501:function(e,t,a){e.exports=a.p+"assets/img/manage-framework-configuration.3b043c9a.png"},502:function(e,t,a){e.exports=a.p+"assets/img/manage-users-button.7e4db1a3.png"},503:function(e,t,a){e.exports=a.p+"assets/img/share-framework-and-manage-users.dd1d4622.png"},504:function(e,t,a){e.exports=a.p+"assets/img/property-details.f97b720c.png"},655:function(e,t,a){"use strict";a.r(t);var o=a(69),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"finding-and-editing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#finding-and-editing"}},[e._v("#")]),e._v(" Finding and Editing")]),e._v(" "),t("p",[e._v("Competency frameworks can be viewed and managed in CaSS Authoring Tools by navigating to the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" page. The Frameworks page can be visited by clicking on the "),t("em",[t("strong",[e._v("Frameworks")])]),e._v(" button on the left sidebar highlighted by the red box in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(485),alt:"CAT Competency Framework Management - Frameworks Page"}})]),e._v(" "),t("p",[e._v("On this page, frameworks are shown with their names in bold. Beneath the\nname, you can see how many competencies are in the framework, when it\nwas created and last modified. If you have permission to edit the\nframework, it will say “"),t("em",[e._v("Editable")]),e._v("”.")]),e._v(" "),t("h2",{attrs:{id:"sorting-and-filtering-frameworks"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sorting-and-filtering-frameworks"}},[e._v("#")]),e._v(" Sorting and Filtering Frameworks")]),e._v(" "),t("p",[e._v("You can sort and filter the list of frameworks by clicking the filter\nbutton next to the search bar. The button next to it clears any filters\nyou’ve applied.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(432),alt:"CAT Competency Framework Management - Filter Button"}})]),e._v(" "),t("p",[e._v("The filter button will open up a side panel to the right of the\nframework list with options to sort, filter, and apply your search term\nto various fields.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(433),alt:"CAT Competency and Framework Management - Filter and Sort Panel"}})]),e._v(" "),t("p",[e._v("The filter options under "),t("em",[t("strong",[e._v("Apply search term to")])]),e._v(" are available based on the type of each field wtihin the current configuration (either browser default or instance default).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(486),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[e._v("Fields for frameworks, competencies, and directories that are of the type "),t("em",[t("strong",[e._v("Text")])]),e._v(" or "),t("em",[t("strong",[e._v("Lang-String")])]),e._v(" are made available to filter on when searching. These settings are applied when creating or editing fields in Configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(487),alt:"CAT Competency and Framework Management - Search Apply Term TO"}})]),e._v(" "),t("p",[t("em",[e._v("(Advanced)")]),e._v(" The configuration settings of "),t("code",[e._v("ceasnDataFields=true")]),e._v(" or "),t("code",[e._v("tlaProfile=true")]),e._v(" override browser default or instance default configurations when listing available fields to filter on.")]),e._v(" "),t("h2",{attrs:{id:"opening-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#opening-a-framework"}},[e._v("#")]),e._v(" Opening a Framework")]),e._v(" "),t("p",[e._v("Double-click on a framework to open the framework.")]),e._v(" "),t("h2",{attrs:{id:"viewing-a-framework-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-a-framework-in-more-detail"}},[e._v("#")]),e._v(" Viewing a Framework in More Detail")]),e._v(" "),t("p",[e._v("Single-click on a framework to view an Information panel with more details and options for the framework.")]),e._v(" "),t("p",[e._v("The "),t("em",[t("strong",[e._v("Information")])]),e._v(" about the framework will show on a side panel to the right of the directory list.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(488),alt:"CAT Competency and Framework Management - Information Panel"}})]),e._v(" "),t("h2",{attrs:{id:"creating-a-new-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-competency-framework"}},[e._v("#")]),e._v(" Creating a New Competency Framework")]),e._v(" "),t("p",[e._v("A new competency framework can be created within CaSS Authoring Tools by pressing the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button at the top of the framework management page.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(489),alt:"CAT Competency Framework Management - Create New Framework"}})]),e._v(" "),t("p",[e._v("When you click on the "),t("em",[t("strong",[e._v("Create New")])]),e._v(" button to create a new competency framework, you will be required to enter a "),t("em",[e._v("Framework Name")]),e._v(" and "),t("em",[e._v("Framework description")]),e._v(" to your new competency framework. Additional properties can be added to a competency framework that are controlled by CaSS Authoring Tools’ configuration settings. For more information about configuration settings and managing the properties of competency frameworks, see the "),t("em",[t("strong",[e._v("Custom Framework Properties")])]),e._v(" section of this user guide under "),t("em",[t("strong",[e._v("Competency Framework and Competency Configuration")])]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"adding-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-competencies"}},[e._v("#")]),e._v(" Adding Competencies")]),e._v(" "),t("p",[e._v("To add competencies to your framework, click the "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button below the framework details.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(490),alt:"CAT Competency Framework Management - Add Competencies"}})]),e._v(" "),t("p",[e._v("You can construct a hierarchy of competencies by checking the box to the left of a competency. The "),t("em",[t("strong",[e._v("add competency")])]),e._v(" button text will change to "),t("em",[t("strong",[e._v("add child")])]),e._v(", which you can click to place a competency underneath the one you’ve checked.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(491),alt:"CAT Competency Framework Management - Add Children to Competencies"}})]),e._v(" "),t("h2",{attrs:{id:"editing-frameworks-and-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-frameworks-and-competencies"}},[e._v("#")]),e._v(" Editing Frameworks and Competencies")]),e._v(" "),t("p",[e._v("To edit a single competency or framework, hover over the item you want to edit and an edit icon will appear. Click the icon highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(492),alt:"CAT Competency Framework Management - Edit"}})]),e._v(" "),t("p",[e._v("A modal will appear and you can edit the framework or competency’s properties. This modal also allows you to delete the competency or framework, remove a competency from the current framework without deleting it, and export the object. Click "),t("em",[t("strong",[e._v("done")])]),e._v(" when you’ve finished making changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(493),alt:"CAT Competency Framework Management - Edit Modal"}})]),e._v(" "),t("p",[e._v("You can add new properties to your object from here too by clicking the "),t("em",[t("strong",[e._v("add property")])]),e._v(" button at the bottom of the modal. You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter in the value, and click "),t("em",[t("strong",[e._v("save property")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(494),alt:"CAT Competency Framework Management - Add a Property"}})]),e._v(" "),t("p",[e._v("If there’s a property you’d like to add to multiple competencies, use the checkboxes to select the competencies you want to edit and click "),t("em",[t("strong",[e._v("edit multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(495),alt:"CAT Competency Framework Management - Edit Multiple Competencies"}})]),e._v(" "),t("p",[e._v("You’ll see a list of properties that are available to add, determined by the configuration you’re using. Select the property you’d like to add, enter the value, and click "),t("em",[t("strong",[e._v("apply to multiple")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(496),alt:"CAT Competency Framework Management - Adding Property to Multiple Competencies"}})]),e._v(" "),t("p",[e._v("If you make a mistake while editing, click the "),t("em",[t("strong",[e._v("undo")])]),e._v(" button in the bar at the top of the page to revert your most recent changes.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(497),alt:"CAT Competency Framework Management - Undo Button"}})]),e._v(" "),t("h3",{attrs:{id:"changing-competency-hierarchy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#changing-competency-hierarchy"}},[e._v("#")]),e._v(" Changing Competency Hierarchy")]),e._v(" "),t("p",[e._v("There are several ways to move competencies around in the hierarchy. You can drag and drop the competency to the spot you’d like to move it to by hovering over the competency. The icon highlighted in the image below will appear and you can click on it, hold down, and drag the competency to the appropriate position.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(498),alt:"CAT Competency Framework Management - Drag and Drop"}})]),e._v(" "),t("p",[e._v("You can also move a competency by selecting its checkbox. Click the cut or copy icon highlighted in red in the image below, select another competency, and click the paste icon.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(499),alt:"CAT Competency Framework Management - Cut, Copy, Paste"}})]),e._v(" "),t("p",[e._v("With one competency selected, you can move it with keyboard commands as well. You can cut, copy and paste, or use the arrow keys to move it to the position you want.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Tab")]),e._v(" - Switch focus between elements on the page")]),e._v(" "),t("li",[t("strong",[e._v("Space")]),e._v(" - Select the element currently in focus")]),e._v(" "),t("li",[t("strong",[e._v("Shift + X")]),e._v(" - Cut competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + C")]),e._v(" - Cut and copy competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + V")]),e._v(" - Drop competency")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ↑, Shift + ↓")]),e._v(" - Move competency up/down in the list.")]),e._v(" "),t("li",[t("strong",[e._v("Shift + ←, Shift + →")]),e._v(" - Move competency indent/outdent in the list")])]),e._v(" "),t("h2",{attrs:{id:"setting-a-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#setting-a-configuration"}},[e._v("#")]),e._v(" Setting a Configuration")]),e._v(" "),t("p",[e._v("Configurations control which properties you can edit and display within a particular framework, and what types of values they can have. If youdon’t specify a configuration for your framework, the browser, instance, or CaSS default will control the properties. If you want a framework to have a different configuration, you can set one by clicking the\nframework configuration button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(500),alt:"CAT Competency Framework Management - Setting a Framework Configuration"}})]),e._v(" "),t("p",[e._v("This will open up a panel with a list of available configurations to apply. Click "),t("em",[t("strong",[e._v("set as framework default")])]),e._v(" next to the configuration you want.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(501),alt:"CAT Competency Framework Management - Manage Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"managing-users-and-sharing-a-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing-a-framework"}},[e._v("#")]),e._v(" Managing Users and Sharing a Framework")]),e._v(" "),t("p",[e._v("To control who can view and edit a framework you own, click the "),t("em",[t("strong",[e._v("manage users")])]),e._v(" button highlighted in red in the image below.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(502),alt:"CAT Competency Framework Management - Manage Users Button"}})]),e._v(" "),t("p",[e._v("You can see who the admins and viewers of your framework are, and add or remove users and organizations. This view also has a shareable link to your framework that you can copy to your clipboard and give to someone else.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(503),alt:"CAT Competency Framework Management - Share Framework and Manage Users"}})]),e._v(" "),t("h2",{attrs:{id:"viewing-frameworks-and-competencies-in-more-detail"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#viewing-frameworks-and-competencies-in-more-detail"}},[e._v("#")]),e._v(" Viewing Frameworks and Competencies in More Detail")]),e._v(" "),t("p",[e._v("By default, only primary properties are shown on a framework and competencies. To see some additional properties, click "),t("em",[t("strong",[e._v("secondary")])]),e._v(" in the panel at the top of the screen. This will show all the properties assigned as "),t("em",[e._v("primary")]),e._v(" and "),t("em",[e._v("secondary")]),e._v(" in the configuration that have values. To see all properties that have values, click on "),t("em",[t("strong",[e._v("tertiary")])]),e._v(".")]),e._v(" "),t("p",[t("img",{attrs:{src:a(504),alt:"CAT Competency Framework Management - Property Details"}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/11.b3ce6cf9.js.gz b/docs/assets/js/11.b3ce6cf9.js.gz new file mode 100644 index 000000000..7d87f83c1 Binary files /dev/null and b/docs/assets/js/11.b3ce6cf9.js.gz differ diff --git a/docs/assets/js/13.148d504d.js.gz b/docs/assets/js/13.148d504d.js.gz deleted file mode 100644 index 9e503ee6a..000000000 Binary files a/docs/assets/js/13.148d504d.js.gz and /dev/null differ diff --git a/docs/assets/js/13.148d504d.js b/docs/assets/js/13.7db161ea.js similarity index 78% rename from docs/assets/js/13.148d504d.js rename to docs/assets/js/13.7db161ea.js index 09b4aa82f..ec76b4209 100644 --- a/docs/assets/js/13.148d504d.js +++ b/docs/assets/js/13.7db161ea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{446:function(e,t,a){e.exports=a.p+"assets/img/alignment-bubble.d1653648.png"},511:function(e,t,a){e.exports=a.p+"assets/img/crosswalk-navigation.d511ba6f.png"},512:function(e,t,a){e.exports=a.p+"assets/img/progress-bar.b67face7.png"},513:function(e,t,a){e.exports=a.p+"assets/img/main-alignment-screen.57985f0f.png"},514:function(e,t,a){e.exports=a.p+"assets/img/action-buttons.aa2fc6ad.png"},515:function(e,t,a){e.exports=a.p+"assets/img/relationship-add-button.fe96ae46.png"},516:function(e,t,a){e.exports=a.p+"assets/img/relationship-type-selection.1ccc143f.png"},517:function(e,t,a){e.exports=a.p+"assets/img/target-competency-selection.1dc6c010.png"},518:function(e,t,a){e.exports=a.p+"assets/img/apply-alignments-button.6cc30393.png"},519:function(e,t,a){e.exports=a.p+"assets/img/alignment-change-tally.ab69747d.png"},520:function(e,t,a){e.exports=a.p+"assets/img/target-competency-removal.e40196e6.png"},521:function(e,t,a){e.exports=a.p+"assets/img/apply-alignment-bubble.88166cf5.png"},522:function(e,t,a){e.exports=a.p+"assets/img/alignment-removing-one.027f9b51.png"},523:function(e,t,a){e.exports=a.p+"assets/img/alignment-save-and-review.32dcf037.png"},524:function(e,t,a){e.exports=a.p+"assets/img/alignment-summary.f357b47a.png"},525:function(e,t,a){e.exports=a.p+"assets/img/framework-application-selection.770e618c.png"},526:function(e,t,a){e.exports=a.p+"assets/img/continue-editing.0f0e5022.png"},527:function(e,t,a){e.exports=a.p+"assets/img/save-alignments.9b945c1b.png"},657:function(e,t,a){"use strict";a.r(t);var s=a(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#framework-crosswalk-tool"}},[e._v("#")]),e._v(" Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be used to create relationships across two separate frameworks.")]),e._v(" "),t("p",[e._v("In order to apply any relationships created with the crosswalk tool, at least one of the frameworks initially selected in the tool wizard must be owned and editable by the logged in user.")]),e._v(" "),t("h2",{attrs:{id:"accessing-the-framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-framework-crosswalk-tool"}},[e._v("#")]),e._v(" Accessing the Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be accessed at any time by selecting the crosswalk frameworks icon under the "),t("em",[t("strong",[e._v("competencies & frameworks")])]),e._v(" category in the navigation menu.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(511),alt:"CAT Competency Framework Management - Crosswalk Frameworks Navigation"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-overview"}},[e._v("#")]),e._v(" Crosswalk Overview")]),e._v(" "),t("p",[e._v("Framework crosswalking is comprised of four steps:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Select Source")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the source framework")]),e._v(" "),t("li",[e._v("The selection for the source framework is limited to frameworks that\nare owned and editable by the current user.")]),e._v(" "),t("li",[e._v("The source framework also defines the relationship types available\nfor the crosswalk by determining the applied configuration of that\nframework.  If there is no explicit configuration applied to the\nselected framework, the relationships available for the crosswalk\nare determined by the selected browser default configuration or the\ninstance default configuration.")])])]),e._v(" "),t("li",[t("strong",[e._v("Select Target")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the target framework")])])]),e._v(" "),t("li",[t("strong",[e._v("Align Frameworks")]),e._v(" "),t("ul",[t("li",[e._v("Creation of the relationships between the\ncompetencies of the two frameworks")])])]),e._v(" "),t("li",[t("strong",[e._v("Save & Review")]),e._v(" "),t("ul",[t("li",[e._v("Review of created relationships, determination of\nwhere the relationships will reside (one or both of the chosen\nframeworks), and the saving of the relationships")])])])]),e._v(" "),t("p",[e._v("The current step will be highlighted by the progress bar at the top of the crosswalk tool screen.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(512),alt:"CAT Crosswalk Frameworks - Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"aligning-framework-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aligning-framework-competencies"}},[e._v("#")]),e._v(" Aligning Framework Competencies")]),e._v(" "),t("p",[e._v("After selecting the source and target frameworks, the selected frameworks will be displayed in side by side panes. Any existing relationships between the two frameworks will be indicated by orange bubbles underneath the corresponding competency in the source framework pane.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(513),alt:"CAT Crosswalk Frameworks - Main Alignment Screen"}})]),e._v(" "),t("p",[e._v("At the top of each framework pane are four action buttons. Clicking these action buttons will affect only the framework view in the corresponding pane.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("show aligned only")]),e._v(" - show only competencies that have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show unaligned only")]),e._v(" - show only competencies that do not have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show all ("),t("em",[e._v("default")]),e._v(")")]),e._v(" - show all competencies regardless of existing alignments")]),e._v(" "),t("li",[t("strong",[e._v("change framework")]),e._v(" - change the source/target framework\n"),t("ul",[t("li",[e._v("Selecting this action will remove all unsaved alignments from the current crosswalk session")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(514),alt:"CAT Crosswalk Frameworks - Crosswalk Action Buttons"}})]),e._v(" "),t("h3",{attrs:{id:"adding-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Adding a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To begin adding a relationship between the competencies within the frameworks, hover over the appropriate competency in the source framework pane and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(515),alt:"CAT Crosswalk Frameworks - Relationship Add Button"}})]),e._v(" "),t("p",[e._v("Select the desired relationship type from the dropdown.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(516),alt:"CAT Crosswalk Frameworks - Relationship Type Selection"}})]),e._v(" "),t("p",[e._v("Once a relationship type has been selected, click the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" to the right of each competency in the target framework pane you wish to apply the relationship. When clicked, the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" will transition into a checkmark. Clicking on this checkmark will remove the relationship.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(517),alt:"CAT Crosswalk Frameworks - Target Competency Selection"}})]),e._v(" "),t("p",[e._v("After selecting the desired competencies, click the apply alignments button.  Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(518),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(519),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("p",[e._v("The alignment tally will keep track of both the addition of new alignments and the removal of alignments created in previous crosswalk sessions.")]),e._v(" "),t("p",[e._v("Once applied, alignments can be quickly accessed by clicking on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(446),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("h3",{attrs:{id:"removing-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Removing a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To remove an existing relationship click on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(446),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("p",[e._v("In the target pane, click on the checkmark icon to the right of the competency you wish to remove from the relationship. When clicked, the checkmark icon will transition into a + button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(520),alt:"CAT Crosswalk Frameworks - Target Competency Removal"}})]),e._v(" "),t("p",[e._v("After removing the undesired competencies, click the apply alignments button. Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(521),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(522),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-review-and-save"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-review-and-save"}},[e._v("#")]),e._v(" Crosswalk Review and Save")]),e._v(" "),t("p",[e._v("To save all changes made during the crosswalk session to the repository, click on the "),t("em",[t("strong",[e._v("save & review")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(523),alt:"CAT Crosswalk Frameworks - Save & Review"}})]),e._v(" "),t("p",[e._v("The summary screen will be displayed detailing the overall alignment changes between the two frameworks and the framework application selector. By default, all owned or editable frameworks used in the crosswalk will be checked. A check mark next the framework means all alignment/relationship changes made will be applied to that framework.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("You may only apply alignment changes to frameworks that you own or can edit.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(524),alt:"CAT Crosswalk Frameworks - Crosswalk Alignment Summary"}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(525),alt:"CAT Crosswalk Frameworks - Framework Application Selection"}})]),e._v(" "),t("p",[e._v("If you wish to make further changes to the alignments, click on the "),t("em",[t("strong",[e._v("continue editing")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(526),alt:"CAT Crosswalk Frameworks - Continue Editing Button"}})]),e._v(" "),t("p",[e._v("When you are satisfied with your changes, click on the "),t("em",[t("strong",[e._v("save alignments")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(527),alt:"CAT Crosswalk Frameworks - Save Alignments Button"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{447:function(e,t,a){e.exports=a.p+"assets/img/alignment-bubble.d1653648.png"},533:function(e,t,a){e.exports=a.p+"assets/img/crosswalk-navigation.d511ba6f.png"},534:function(e,t,a){e.exports=a.p+"assets/img/progress-bar.b67face7.png"},535:function(e,t,a){e.exports=a.p+"assets/img/main-alignment-screen.57985f0f.png"},536:function(e,t,a){e.exports=a.p+"assets/img/action-buttons.aa2fc6ad.png"},537:function(e,t,a){e.exports=a.p+"assets/img/relationship-add-button.fe96ae46.png"},538:function(e,t,a){e.exports=a.p+"assets/img/relationship-type-selection.1ccc143f.png"},539:function(e,t,a){e.exports=a.p+"assets/img/target-competency-selection.1dc6c010.png"},540:function(e,t,a){e.exports=a.p+"assets/img/apply-alignments-button.6cc30393.png"},541:function(e,t,a){e.exports=a.p+"assets/img/alignment-change-tally.ab69747d.png"},542:function(e,t,a){e.exports=a.p+"assets/img/target-competency-removal.e40196e6.png"},543:function(e,t,a){e.exports=a.p+"assets/img/apply-alignment-bubble.88166cf5.png"},544:function(e,t,a){e.exports=a.p+"assets/img/alignment-removing-one.027f9b51.png"},545:function(e,t,a){e.exports=a.p+"assets/img/alignment-save-and-review.32dcf037.png"},546:function(e,t,a){e.exports=a.p+"assets/img/alignment-summary.f357b47a.png"},547:function(e,t,a){e.exports=a.p+"assets/img/framework-application-selection.770e618c.png"},548:function(e,t,a){e.exports=a.p+"assets/img/continue-editing.0f0e5022.png"},549:function(e,t,a){e.exports=a.p+"assets/img/save-alignments.9b945c1b.png"},658:function(e,t,a){"use strict";a.r(t);var s=a(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#framework-crosswalk-tool"}},[e._v("#")]),e._v(" Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be used to create relationships across two separate frameworks.")]),e._v(" "),t("p",[e._v("In order to apply any relationships created with the crosswalk tool, at least one of the frameworks initially selected in the tool wizard must be owned and editable by the logged in user.")]),e._v(" "),t("h2",{attrs:{id:"accessing-the-framework-crosswalk-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-framework-crosswalk-tool"}},[e._v("#")]),e._v(" Accessing the Framework Crosswalk Tool")]),e._v(" "),t("p",[e._v("The Framework Crosswalk Tool can be accessed at any time by selecting the crosswalk frameworks icon under the "),t("em",[t("strong",[e._v("competencies & frameworks")])]),e._v(" category in the navigation menu.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(533),alt:"CAT Competency Framework Management - Crosswalk Frameworks Navigation"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-overview"}},[e._v("#")]),e._v(" Crosswalk Overview")]),e._v(" "),t("p",[e._v("Framework crosswalking is comprised of four steps:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Select Source")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the source framework")]),e._v(" "),t("li",[e._v("The selection for the source framework is limited to frameworks that\nare owned and editable by the current user.")]),e._v(" "),t("li",[e._v("The source framework also defines the relationship types available\nfor the crosswalk by determining the applied configuration of that\nframework.  If there is no explicit configuration applied to the\nselected framework, the relationships available for the crosswalk\nare determined by the selected browser default configuration or the\ninstance default configuration.")])])]),e._v(" "),t("li",[t("strong",[e._v("Select Target")]),e._v(" "),t("ul",[t("li",[e._v("Selection of the target framework")])])]),e._v(" "),t("li",[t("strong",[e._v("Align Frameworks")]),e._v(" "),t("ul",[t("li",[e._v("Creation of the relationships between the\ncompetencies of the two frameworks")])])]),e._v(" "),t("li",[t("strong",[e._v("Save & Review")]),e._v(" "),t("ul",[t("li",[e._v("Review of created relationships, determination of\nwhere the relationships will reside (one or both of the chosen\nframeworks), and the saving of the relationships")])])])]),e._v(" "),t("p",[e._v("The current step will be highlighted by the progress bar at the top of the crosswalk tool screen.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(534),alt:"CAT Crosswalk Frameworks - Progress Bar"}})]),e._v(" "),t("h2",{attrs:{id:"aligning-framework-competencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#aligning-framework-competencies"}},[e._v("#")]),e._v(" Aligning Framework Competencies")]),e._v(" "),t("p",[e._v("After selecting the source and target frameworks, the selected frameworks will be displayed in side by side panes. Any existing relationships between the two frameworks will be indicated by orange bubbles underneath the corresponding competency in the source framework pane.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(535),alt:"CAT Crosswalk Frameworks - Main Alignment Screen"}})]),e._v(" "),t("p",[e._v("At the top of each framework pane are four action buttons. Clicking these action buttons will affect only the framework view in the corresponding pane.")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("show aligned only")]),e._v(" - show only competencies that have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show unaligned only")]),e._v(" - show only competencies that do not have alignments to competencies in the other framework")]),e._v(" "),t("li",[t("strong",[e._v("show all ("),t("em",[e._v("default")]),e._v(")")]),e._v(" - show all competencies regardless of existing alignments")]),e._v(" "),t("li",[t("strong",[e._v("change framework")]),e._v(" - change the source/target framework\n"),t("ul",[t("li",[e._v("Selecting this action will remove all unsaved alignments from the current crosswalk session")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(536),alt:"CAT Crosswalk Frameworks - Crosswalk Action Buttons"}})]),e._v(" "),t("h3",{attrs:{id:"adding-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Adding a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To begin adding a relationship between the competencies within the frameworks, hover over the appropriate competency in the source framework pane and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(537),alt:"CAT Crosswalk Frameworks - Relationship Add Button"}})]),e._v(" "),t("p",[e._v("Select the desired relationship type from the dropdown.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(538),alt:"CAT Crosswalk Frameworks - Relationship Type Selection"}})]),e._v(" "),t("p",[e._v("Once a relationship type has been selected, click the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" to the right of each competency in the target framework pane you wish to apply the relationship. When clicked, the "),t("em",[t("strong",[e._v("+ button")])]),e._v(" will transition into a checkmark. Clicking on this checkmark will remove the relationship.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(539),alt:"CAT Crosswalk Frameworks - Target Competency Selection"}})]),e._v(" "),t("p",[e._v("After selecting the desired competencies, click the apply alignments button.  Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(540),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(541),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("p",[e._v("The alignment tally will keep track of both the addition of new alignments and the removal of alignments created in previous crosswalk sessions.")]),e._v(" "),t("p",[e._v("Once applied, alignments can be quickly accessed by clicking on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(447),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("h3",{attrs:{id:"removing-a-crosswalk-relationship-alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-crosswalk-relationship-alignment"}},[e._v("#")]),e._v(" Removing a Crosswalk Relationship/Alignment")]),e._v(" "),t("p",[e._v("To remove an existing relationship click on the corresponding alignment bubble underneath the source competency.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(447),alt:"CAT Crosswalk Frameworks - Alignment Bubble"}})]),e._v(" "),t("p",[e._v("In the target pane, click on the checkmark icon to the right of the competency you wish to remove from the relationship. When clicked, the checkmark icon will transition into a + button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(542),alt:"CAT Crosswalk Frameworks - Target Competency Removal"}})]),e._v(" "),t("p",[e._v("After removing the undesired competencies, click the apply alignments button. Once applied, you will notice a running tally of added and removed alignments under the crosswalk progress bar.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(543),alt:"CAT Crosswalk Frameworks - Apply Alignments Button."}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(544),alt:"CAT Crosswalk Frameworks - Alignment Change Tally"}})]),e._v(" "),t("h2",{attrs:{id:"crosswalk-review-and-save"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crosswalk-review-and-save"}},[e._v("#")]),e._v(" Crosswalk Review and Save")]),e._v(" "),t("p",[e._v("To save all changes made during the crosswalk session to the repository, click on the "),t("em",[t("strong",[e._v("save & review")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(545),alt:"CAT Crosswalk Frameworks - Save & Review"}})]),e._v(" "),t("p",[e._v("The summary screen will be displayed detailing the overall alignment changes between the two frameworks and the framework application selector. By default, all owned or editable frameworks used in the crosswalk will be checked. A check mark next the framework means all alignment/relationship changes made will be applied to that framework.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("You may only apply alignment changes to frameworks that you own or can edit.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(546),alt:"CAT Crosswalk Frameworks - Crosswalk Alignment Summary"}})]),e._v(" "),t("p",[t("img",{attrs:{src:a(547),alt:"CAT Crosswalk Frameworks - Framework Application Selection"}})]),e._v(" "),t("p",[e._v("If you wish to make further changes to the alignments, click on the "),t("em",[t("strong",[e._v("continue editing")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(548),alt:"CAT Crosswalk Frameworks - Continue Editing Button"}})]),e._v(" "),t("p",[e._v("When you are satisfied with your changes, click on the "),t("em",[t("strong",[e._v("save alignments")])]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(549),alt:"CAT Crosswalk Frameworks - Save Alignments Button"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/13.7db161ea.js.gz b/docs/assets/js/13.7db161ea.js.gz new file mode 100644 index 000000000..74fb4d8be Binary files /dev/null and b/docs/assets/js/13.7db161ea.js.gz differ diff --git a/docs/assets/js/24.b6f14fac.js b/docs/assets/js/24.7c14a431.js similarity index 94% rename from docs/assets/js/24.b6f14fac.js rename to docs/assets/js/24.7c14a431.js index b2a31340b..df4403a85 100644 --- a/docs/assets/js/24.b6f14fac.js +++ b/docs/assets/js/24.7c14a431.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{434:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},567:function(e,t,r){e.exports=r.p+"assets/img/framework-properties.f66c77e7.png"},568:function(e,t,r){e.exports=r.p+"assets/img/add-custom-framework-property.e4d663fb.png"},569:function(e,t,r){e.exports=r.p+"assets/img/new-framework-property.f88627b4.png"},570:function(e,t,r){e.exports=r.p+"assets/img/limit-values.a6f85c8e.png"},571:function(e,t,r){e.exports=r.p+"assets/img/limit-values-framework.40f13c6e.png"},572:function(e,t,r){e.exports=r.p+"assets/img/framework-configuration.2ae19467.png"},661:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"configuring-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-framework-properties"}},[e._v("#")]),e._v(" Configuring Framework Properties")]),e._v(" "),t("p",[e._v("Framework properties are the values that can be added, edited, and deleted for framework objects. Minimal framework properties are "),t("em",[t("strong",[e._v("id")])]),e._v(", "),t("em",[t("strong",[e._v("name")])]),e._v(", and "),t("em",[t("strong",[e._v("description")])]),e._v(". Properties added here will be displayed in the framework object at the top of the framework editor view.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(567),alt:"Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the framework level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-properties"}},[e._v("#")]),e._v(" Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a framework by clicking the "),t("em",[e._v("add custom framework property")]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(568),alt:"Add Custom Framework Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[e._v("New Framework Property")]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(569),alt:"New Framework Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-framework-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-property-fields"}},[e._v("#")]),e._v(" Custom Framework Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[e._v("range/type: Text")]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[e._v("range/type")]),e._v(" field defines the property type. Certain range/types allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs "),t("em",[e._v("(primary, secondary, or tertiary)")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The name of the property in the data record. Only alphanumerics are allowed.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(434),alt:"One entry per language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(570),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(571),alt:"Limit Value Entries"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-framework-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-framework-property"}},[e._v("#")]),e._v(" Applying the Custom Framework Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-framework-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Framework Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(572),alt:"Delete Custom Properties"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{434:function(e,t,r){e.exports=r.p+"assets/img/one-entry-per-language.de14fadd.png"},569:function(e,t,r){e.exports=r.p+"assets/img/framework-properties.f66c77e7.png"},570:function(e,t,r){e.exports=r.p+"assets/img/add-custom-framework-property.e4d663fb.png"},571:function(e,t,r){e.exports=r.p+"assets/img/new-framework-property.f88627b4.png"},572:function(e,t,r){e.exports=r.p+"assets/img/limit-values.a6f85c8e.png"},573:function(e,t,r){e.exports=r.p+"assets/img/limit-values-framework.40f13c6e.png"},574:function(e,t,r){e.exports=r.p+"assets/img/framework-configuration.2ae19467.png"},663:function(e,t,r){"use strict";r.r(t);var a=r(69),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"configuring-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-framework-properties"}},[e._v("#")]),e._v(" Configuring Framework Properties")]),e._v(" "),t("p",[e._v("Framework properties are the values that can be added, edited, and deleted for framework objects. Minimal framework properties are "),t("em",[t("strong",[e._v("id")])]),e._v(", "),t("em",[t("strong",[e._v("name")])]),e._v(", and "),t("em",[t("strong",[e._v("description")])]),e._v(". Properties added here will be displayed in the framework object at the top of the framework editor view.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(569),alt:"Framework Configuration"}})]),e._v(" "),t("h2",{attrs:{id:"property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#property-fields"}},[e._v("#")]),e._v(" Property Fields")]),e._v(" "),t("p",[e._v("Certain property fields can be modified directly from the property list:")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - label to be displayed in form inputs for that property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("description")])]),e._v(" - description of this property")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display category")])]),e._v(" - category (if any) under which the property is displayed in form inputs")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("required")])]),e._v(" - property required toggle")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("display priority")])]),e._v(" - priority in which the property is displayed in form inputs\n"),t("ul",[t("li",[t("em",[e._v("primary, secondary, or tertiary")])])])])]),e._v(" "),t("p",[e._v("At the framework level the following static rules apply:")]),e._v(" "),t("ul",[t("li",[e._v("The "),t("em",[t("strong",[e._v("id")])]),e._v(" property is "),t("em",[e._v("required")])]),e._v(" "),t("li",[e._v("The "),t("em",[t("strong",[e._v("name")])]),e._v(" property is "),t("em",[e._v("required")]),e._v(" and has a display priority of "),t("em",[e._v("primary")])])]),e._v(" "),t("h2",{attrs:{id:"custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-properties"}},[e._v("#")]),e._v(" Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be added to a framework by clicking the "),t("em",[e._v("add custom framework property")]),e._v(" button.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(570),alt:"Add Custom Framework Property"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[e._v("New Framework Property")]),e._v(" dialogue window is displayed.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(571),alt:"New Framework Property"}})]),e._v(" "),t("h3",{attrs:{id:"custom-framework-property-fields"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#custom-framework-property-fields"}},[e._v("#")]),e._v(" Custom Framework Property Fields")]),e._v(" "),t("p",[e._v("Several fields must be completed in order to add the new property. Some field options (such as "),t("em",[e._v("range/type: Text")]),e._v(") allow further customization of the property.")]),e._v(" "),t("h3",{attrs:{id:"context"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#context"}},[e._v("#")]),e._v(" Context")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("Custom properties in CaSS are stored as namespaced linked JSON-LD records. Because of this, all new properties must have a context. By default, all custom properties have the "),t("strong",[e._v("CaSS v4.0")]),e._v(" "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" context. However, it is also possible to modify this field to the following values:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CTDL-ASN")]),e._v(" - "),t("a",{attrs:{href:"https://purl.org/ctdlasn/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://purl.org/ctdlasn/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 1999")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/1999/02/22-rdf-syntax-ns#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("RDF Semantic Web Standards 2000")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Key Based Authorization and Control")]),e._v(" - "),t("a",{attrs:{href:"https://schema.cassproject.org/kbac/0.4/",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/kbac/0.4/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Eduworks v3.0")]),e._v(" - "),t("a",{attrs:{href:"http://schema.eduworks.com/general/0.3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.eduworks.com/general/0.3/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Schema.org")]),e._v(" - "),t("a",{attrs:{href:"http://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Achievements Standard Network")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/ASN/schema/core/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/ASN/schema/core/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Elements v1.1")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/elements/1.1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/elements/1.1/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("DCMI Terms")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/dc/terms/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Gem v2.0")]),e._v(" - "),t("a",{attrs:{href:"http://purl.org/gem/qualifiers/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/gem/qualifiers/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Relators Scheme")]),e._v(" - "),t("a",{attrs:{href:"http://www.loc.gov/loc.terms/relators/",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.loc.gov/loc.terms/relators/"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Simple Knowledge Organization System")]),e._v(" - "),t("a",{attrs:{href:"http://www.w3.org/2004/02/skos/core#",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2004/02/skos/core#"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("It is highly recommended to accept the default for this field unless there is an actionable reason for not doing so.")]),e._v(" "),t("h3",{attrs:{id:"range-type"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#range-type"}},[e._v("#")]),e._v(" Range/Type")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The "),t("em",[e._v("range/type")]),e._v(" field defines the property type. Certain range/types allow for further customization of the property. The following values are available for this field:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Lang-String")]),e._v(" - An RDF schema lang string as defined by "),t("a",{attrs:{href:"http://www.w3.org/2000/01/rdf-schema#langString",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2000/01/rdf-schema#langString"),t("OutboundLink")],1),e._v(".\n"),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("One Entry Per Language")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("URL")]),e._v(" - A schema.org URL as defined by "),t("a",{attrs:{href:"http://schema.org/URL",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/URL"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Text")]),e._v(" - A schema.org Text (plain string) value as defined by "),t("a",{attrs:{href:"http://schema.org/Text",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://schema.org/Text"),t("OutboundLink")],1),e._v(" "),t("ul",[t("li",[e._v("Selecting this value opens the "),t("em",[e._v("Limit Values")]),e._v(" property field")])])]),e._v(" "),t("li",[t("strong",[e._v("Date-Time")]),e._v(" - A w3.org dateTime value as defined by "),t("a",{attrs:{href:"http://www.w3.org/2001/XMLSchema#dateTime",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://www.w3.org/2001/XMLSchema#dateTime"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("Date")]),e._v(" - A dublin core date value as defined by "),t("a",{attrs:{href:"http://purl.org/dc/terms/date",target:"_blank",rel:"noopener noreferrer"}},[e._v("http://purl.org/dc/terms/date"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("strong",[e._v("SKOS Concept")]),e._v(" - A CaSS concept value as defined by "),t("a",{attrs:{href:"https://schema.cassproject.org/0.4/skos/Concept",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://schema.cassproject.org/0.4/skos/Concept"),t("OutboundLink")],1)])]),e._v(" "),t("h3",{attrs:{id:"display-priority"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-priority"}},[e._v("#")]),e._v(" Display Priority")]),e._v(" "),t("p",[e._v("The priority in which the property is displayed in form inputs "),t("em",[e._v("(primary, secondary, or tertiary)")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"required"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#required"}},[e._v("#")]),e._v(" Required")]),e._v(" "),t("p",[e._v("The property is required toggle.")]),e._v(" "),t("h3",{attrs:{id:"unique-property-identifier"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unique-property-identifier"}},[e._v("#")]),e._v(" Unique Property Identifier")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Only editable at the time of property creation.")])]),e._v(" "),t("p",[e._v("The name of the property in the data record. Only alphanumerics are allowed.")]),e._v(" "),t("h3",{attrs:{id:"display-label"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-label"}},[e._v("#")]),e._v(" Display Label")]),e._v(" "),t("p",[e._v("The label to be displayed in form inputs for the property.")]),e._v(" "),t("h3",{attrs:{id:"description"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#description"}},[e._v("#")]),e._v(" Description")]),e._v(" "),t("p",[e._v("The description of the property.")]),e._v(" "),t("h3",{attrs:{id:"display-category"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#display-category"}},[e._v("#")]),e._v(" Display Category")]),e._v(" "),t("p",[e._v("The category (if any) under which the property is displayed in form inputs.")]),e._v(" "),t("h3",{attrs:{id:"one-entry-per-language"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#one-entry-per-language"}},[e._v("#")]),e._v(" One Entry Per Language")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Lang-String")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:r(434),alt:"One entry per language"}})]),e._v(" "),t("p",[e._v("By toggling this field on, custom properties of the "),t("em",[t("strong",[e._v("range/type Lang-String")])]),e._v(" can be limited so that only a single entry can be made per language chosen.")]),e._v(" "),t("h3",{attrs:{id:"limit-values"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#limit-values"}},[e._v("#")]),e._v(" Limit Values")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This is only available for "),t("em",[t("strong",[e._v("range/type=Text")])])])]),e._v(" "),t("p",[e._v("When creating a custom property of "),t("em",[t("strong",[e._v("range/type Text")])]),e._v(", you can limit the values allowed to the property. To do this, toggle the "),t("em",[t("strong",[e._v("Limit Values")])]),e._v(" field on and click the "),t("em",[t("strong",[e._v("add")])]),e._v(" button to begin managing the list of allowable values.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(572),alt:"Limit Values"}})]),e._v(" "),t("p",[e._v("For each entry in the limit values table, a "),t("em",[t("strong",[e._v("display label")])]),e._v(" and "),t("em",[t("strong",[e._v("field value")])]),e._v(" must be entered.")]),e._v(" "),t("ul",[t("li",[t("em",[t("strong",[e._v("display label")])]),e._v(" - the label displayed to the user when selecting the value")]),e._v(" "),t("li",[t("em",[t("strong",[e._v("field value")])]),e._v(" - the recorded value when the value is selected by the user")])]),e._v(" "),t("p",[t("img",{attrs:{src:r(573),alt:"Limit Value Entries"}})]),e._v(" "),t("h2",{attrs:{id:"applying-the-custom-framework-property"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#applying-the-custom-framework-property"}},[e._v("#")]),e._v(" Applying the Custom Framework Property")]),e._v(" "),t("p",[e._v("Once complete, the new property can be applied to the framework by clicking the "),t("em",[t("strong",[e._v("apply new property")])]),e._v(" in the lower right corner of the dialogue window.")]),e._v(" "),t("h2",{attrs:{id:"editing-deleting-custom-framework-properties"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#editing-deleting-custom-framework-properties"}},[e._v("#")]),e._v(" Editing/Deleting Custom Framework Properties")]),e._v(" "),t("p",[e._v("Custom properties can be edited and deleted by selecting the appropriate action buttons to the right of the corresponding property entry in the "),t("em",[t("strong",[e._v("Framework Properties")])]),e._v(" list.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(574),alt:"Delete Custom Properties"}})])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/24.7c14a431.js.gz b/docs/assets/js/24.7c14a431.js.gz new file mode 100644 index 000000000..1608f93f7 Binary files /dev/null and b/docs/assets/js/24.7c14a431.js.gz differ diff --git a/docs/assets/js/24.b6f14fac.js.gz b/docs/assets/js/24.b6f14fac.js.gz deleted file mode 100644 index 9a1abfdd9..000000000 Binary files a/docs/assets/js/24.b6f14fac.js.gz and /dev/null differ diff --git a/docs/assets/js/26.56798859.js b/docs/assets/js/26.2cd05b7f.js similarity index 86% rename from docs/assets/js/26.56798859.js rename to docs/assets/js/26.2cd05b7f.js index 42e466038..28b75a9cb 100644 --- a/docs/assets/js/26.56798859.js +++ b/docs/assets/js/26.2cd05b7f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{505:function(t,e,n){t.exports=n.p+"assets/img/configurations.63f74143.png"},506:function(t,e,n){t.exports=n.p+"assets/img/browser-default.25f6a9ff.png"},507:function(t,e,n){t.exports=n.p+"assets/img/view-manage-delete.5931810b.png"},508:function(t,e,n){t.exports=n.p+"assets/img/create-new-configuration.ea5e3e25.png"},509:function(t,e,n){t.exports=n.p+"assets/img/general-details.6aaad19b.png"},510:function(t,e,n){t.exports=n.p+"assets/img/save-configuration.23d35bf3.png"},656:function(t,e,n){"use strict";n.r(e);var a=n(69),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"configurations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configurations"}},[t._v("#")]),t._v(" Configurations")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("This section is not applicable to Credential Engine instances of CAT.")])]),t._v(" "),e("p",[t._v("Configurations control the way frameworks and competencies appear in the editor, as well as what properties,\nrelationships, and in some cases value types of properties and relationships that can be added to frameworks and competencies.")]),t._v(" "),e("p",[t._v("Configurations are set at the framework object. If a framework does not have a configuration assigned,\nthen the following priority is made to determine the correct configuration to apply to the display of the framework:")]),t._v(" "),e("ol",[e("li",[t._v("Browser default configuration")]),t._v(" "),e("li",[t._v("Instance default configuration")]),t._v(" "),e("li",[t._v("CaSS nomenclature fallback")])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h2",{attrs:{id:"accessing-the-cat-configuration-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cat-configuration-manager"}},[t._v("#")]),t._v(" Accessing the CAT Configuration Manager")]),t._v(" "),e("p",[t._v("The CAT configuration manager can be accessed at any time by selecting the "),e("em",[e("strong",[t._v("configurations")])]),t._v(" icon on the\nlower left corner of the navigation menu.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(505),alt:"Configurations Navigation Menu"}})]),t._v(" "),e("p",[t._v("Upon entering the configuration manager, a list of all existing configurations in the current CAT instance are displayed. Public configurations or configurations owned by the current logged in user can be managed or deleted by selecting one of the actions icons to the right of the configuration item. Unowned configurations can be viewed by selecting the appropriate action icon.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(506),alt:"Configuration Action Browser Default"}})]),t._v(" "),e("p",[t._v("It is also possible for users to set their browser default configuration from this screen")]),t._v(" "),e("p",[e("img",{attrs:{src:n(507),alt:"Browser Default"}})]),t._v(" "),e("h2",{attrs:{id:"creating-a-new-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-configuration"}},[t._v("#")]),t._v(" Creating a New Configuration")]),t._v(" "),e("p",[t._v("Configurations can be created by clicking the "),e("em",[e("strong",[t._v("create new configuration")])]),t._v(" button at the bottom right corner of the configuration management list screen. By default, all required fields are pre-populated with default CaSS terminology and settings.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(508),alt:"Create new Configuration"}})]),t._v(" "),e("h2",{attrs:{id:"managing-a-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-a-configuration"}},[t._v("#")]),t._v(" Managing a Configuration")]),t._v(" "),e("p",[t._v("After creating a new configuration or selecting the "),e("em",[e("strong",[t._v("manage")])]),t._v(" action on an existing configuration, the configuration details screen is displayed. This screen is divided into the following sections:")]),t._v(" "),e("h3",{attrs:{id:"configuration-general-details"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-general-details"}},[t._v("#")]),t._v(" Configuration General Details")]),t._v(" "),e("p",[e("img",{attrs:{src:n(509),alt:"General Details"}})]),t._v(" "),e("p",[t._v("The general details configuration settings provide fields for editing the "),e("em",[e("strong",[t._v("name")])]),t._v(" and "),e("em",[e("strong",[t._v("description")])]),t._v(" of the configuration. From this section you can also toggle the "),e("em",[e("strong",[t._v("instance default")])]),t._v(" switch and set your browser default.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h3",{attrs:{id:"saving-the-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#saving-the-configuration"}},[t._v("#")]),t._v(" Saving the Configuration")]),t._v(" "),e("p",[t._v("Configurations can be saved by clicking on the "),e("em",[e("strong",[t._v("save configuration")])]),t._v(" button on the left side of the "),e("em",[e("strong",[t._v("configuration details")])]),t._v(" screen.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(510),alt:"Save Configuration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{527:function(t,e,n){t.exports=n.p+"assets/img/configurations.63f74143.png"},528:function(t,e,n){t.exports=n.p+"assets/img/browser-default.25f6a9ff.png"},529:function(t,e,n){t.exports=n.p+"assets/img/view-manage-delete.5931810b.png"},530:function(t,e,n){t.exports=n.p+"assets/img/create-new-configuration.ea5e3e25.png"},531:function(t,e,n){t.exports=n.p+"assets/img/general-details.6aaad19b.png"},532:function(t,e,n){t.exports=n.p+"assets/img/save-configuration.23d35bf3.png"},657:function(t,e,n){"use strict";n.r(e);var a=n(69),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"configurations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configurations"}},[t._v("#")]),t._v(" Configurations")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("This section is not applicable to Credential Engine instances of CAT.")])]),t._v(" "),e("p",[t._v("Configurations control the way frameworks and competencies appear in the editor, as well as what properties,\nrelationships, and in some cases value types of properties and relationships that can be added to frameworks and competencies.")]),t._v(" "),e("p",[t._v("Configurations are set at the framework object. If a framework does not have a configuration assigned,\nthen the following priority is made to determine the correct configuration to apply to the display of the framework:")]),t._v(" "),e("ol",[e("li",[t._v("Browser default configuration")]),t._v(" "),e("li",[t._v("Instance default configuration")]),t._v(" "),e("li",[t._v("CaSS nomenclature fallback")])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h2",{attrs:{id:"accessing-the-cat-configuration-manager"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-cat-configuration-manager"}},[t._v("#")]),t._v(" Accessing the CAT Configuration Manager")]),t._v(" "),e("p",[t._v("The CAT configuration manager can be accessed at any time by selecting the "),e("em",[e("strong",[t._v("configurations")])]),t._v(" icon on the\nlower left corner of the navigation menu.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(527),alt:"Configurations Navigation Menu"}})]),t._v(" "),e("p",[t._v("Upon entering the configuration manager, a list of all existing configurations in the current CAT instance are displayed. Public configurations or configurations owned by the current logged in user can be managed or deleted by selecting one of the actions icons to the right of the configuration item. Unowned configurations can be viewed by selecting the appropriate action icon.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(528),alt:"Configuration Action Browser Default"}})]),t._v(" "),e("p",[t._v("It is also possible for users to set their browser default configuration from this screen")]),t._v(" "),e("p",[e("img",{attrs:{src:n(529),alt:"Browser Default"}})]),t._v(" "),e("h2",{attrs:{id:"creating-a-new-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-new-configuration"}},[t._v("#")]),t._v(" Creating a New Configuration")]),t._v(" "),e("p",[t._v("Configurations can be created by clicking the "),e("em",[e("strong",[t._v("create new configuration")])]),t._v(" button at the bottom right corner of the configuration management list screen. By default, all required fields are pre-populated with default CaSS terminology and settings.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(530),alt:"Create new Configuration"}})]),t._v(" "),e("h2",{attrs:{id:"managing-a-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-a-configuration"}},[t._v("#")]),t._v(" Managing a Configuration")]),t._v(" "),e("p",[t._v("After creating a new configuration or selecting the "),e("em",[e("strong",[t._v("manage")])]),t._v(" action on an existing configuration, the configuration details screen is displayed. This screen is divided into the following sections:")]),t._v(" "),e("h3",{attrs:{id:"configuration-general-details"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuration-general-details"}},[t._v("#")]),t._v(" Configuration General Details")]),t._v(" "),e("p",[e("img",{attrs:{src:n(531),alt:"General Details"}})]),t._v(" "),e("p",[t._v("The general details configuration settings provide fields for editing the "),e("em",[e("strong",[t._v("name")])]),t._v(" and "),e("em",[e("strong",[t._v("description")])]),t._v(" of the configuration. From this section you can also toggle the "),e("em",[e("strong",[t._v("instance default")])]),t._v(" switch and set your browser default.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),e("p",[t._v("Only a single configuration can be set to the instance default at any given time. In order to change the instance default, the owner of the current instance default must toggle the default switch off. At that point, another configuration can be set as the instance default.")])]),t._v(" "),e("h3",{attrs:{id:"saving-the-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#saving-the-configuration"}},[t._v("#")]),t._v(" Saving the Configuration")]),t._v(" "),e("p",[t._v("Configurations can be saved by clicking on the "),e("em",[e("strong",[t._v("save configuration")])]),t._v(" button on the left side of the "),e("em",[e("strong",[t._v("configuration details")])]),t._v(" screen.")]),t._v(" "),e("p",[e("img",{attrs:{src:n(532),alt:"Save Configuration"}})])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/26.2cd05b7f.js.gz b/docs/assets/js/26.2cd05b7f.js.gz new file mode 100644 index 000000000..dc53362a6 Binary files /dev/null and b/docs/assets/js/26.2cd05b7f.js.gz differ diff --git a/docs/assets/js/26.56798859.js.gz b/docs/assets/js/26.56798859.js.gz deleted file mode 100644 index abfd30384..000000000 Binary files a/docs/assets/js/26.56798859.js.gz and /dev/null differ diff --git a/docs/assets/js/27.a8e6e156.js b/docs/assets/js/27.a895691a.js similarity index 99% rename from docs/assets/js/27.a8e6e156.js rename to docs/assets/js/27.a895691a.js index 3024e8aee..bf69341e9 100644 --- a/docs/assets/js/27.a8e6e156.js +++ b/docs/assets/js/27.a895691a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{625:function(t,s){t.exports="data:image/png;base64,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"},626:function(t,s,a){t.exports=a.p+"assets/img/relation-requires.1be62180.png"},627:function(t,s){t.exports="data:image/png;base64,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"},628:function(t,s){t.exports="data:image/png;base64,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"},629:function(t,s,a){t.exports=a.p+"assets/img/relation-desires.341aa591.png"},630:function(t,s){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADDCAYAAABtec/IAAAkJElEQVR4Xu2dB3hUxdfGN9vL3bubQiihhUBon/SiFKmGHhAC0gWkFxFCEYjSg4YapEXpiHQRpZeEFqpAEAyoIKIIgkiVgJQ935wL8oc7GFrK7ux5n+f3SLzZ7O7c886dekajIaWltIzXGX0YsxkJFov5hMNhP+fn57gh2213JMl6D9FqtcCuPxG8brNZ8PfuyLLtb1mWzvv4+Jxg17Yz5jIGMsIYsibz5cMIZlRjdGAMZd9tpl22r7LZbfuskvWk1Wa9YJNsf7L/f0fzhO+L4HUFu+2Uw+k4wF6/1mg2fs6ujWR0YtRiFGJYNSSSG6geI0an0+1g5r7EzH2X/Qx2yQqFCwa76teu7Orfuy18NLwXzJ0xDFYvmwQJa+Lg1NGvH/LbsbUA1759yNkf1z92HX9/3ZeTlddPGNMX+vRsBfVqV3Lh33fIkgvfz2Ix3TObTX+yf+9lTGe0YBgf+ZxpqcKMxowRZrN5LTP2GQ1+BqslJTgk76UqNSpfbt/t7Vv9PugDH30yCuIWToUFK2dD/IEND9mWtBl+uHDkIYlHEx67vuCrOTBryQzl9UNGDYROPTvcfaNujauhRUIvO3wd1/H92HtfYhUEVoYTNPcrh3IM8/8+JomUtgpkROr1unh/P8c1o9EAzPBQ6bUSrve6t4R5ccPh4I6FcP3c9scMnd78c3E3HN61CBbPiVYqh8oVS93z83W49DodmIyGa+wz72ZEM0Ie/zrPJBujOiPKYrEk6A36FGb4lBJlil1s07HVzY+njIaVW5bCoVN7HzN0epN87jCs3rESJs+eAD0iu95+vXqly1lzZL3MWhd3rVbz9+zzxjJaae63SkikF1YLg0G/hRk+RafTQoGQ3K5uHSNg0exoOJ28mjOjO/HHiY2w8otx0KNzM1fRwiH3WCsFWKWVwr5TIuM9hqT6rv+qJGMwM/xebK7nzJ3zUkTrJtcmxMVAwsGNnBndiW9P7IZZS+OgV//ut0qXK3XBaDTeNJlM2EKJYzRl+D7+VUmkx4VNyMFOh3SaPUlcAf5OaNc6HJYviIFrZzP2yZ7W3Di/E9av/AQ6tW/syp4t4B5WaFqtz2nN/adlU4PBMJcZ5i+HU74e3qTuFXy6Hvx5D2cyT+LYH4dh6fqF0Ktf95SCRUPPs+9822A0YIuoLyPvozee5L3SMyIdDvspi9kE+fPlco2M6gZH9izhTCQSvyavgTHDekJogTyArYN8BYJd7w/vD0fOHOCMJApJp/dD7Mzxd6uGVTnHKoKbrEvzHbv3UYzcqpggeYHKWy3mRMlmceXNkwOGDuoMxw+s4IziDZz7aQNMmTAIypR5BXz9nNCmY0v4Kn4ZZyCROHrmIHy2aPq9GrWq/a7T626ySjCBxURbDc0wCC182kf7+zmvmkxGaNeqPuzeMoczhDeTvH8Z9O3dFgIDA6BoscKAA31oFrWBRAJbBtETR/ydv2DIb1qt9gaLkWmMIqrYIXmwnAajboksS/fyh+SC6RMHeXyfPr25c2kvLFsQA+XLl4AsrDLoPbAn7D62nTOPaCQc3ABNWzX+1WAwXPfx8dnEYidcc39tB8kDFSxJll0Wi9lVuWJJZT5dHejE09m/bT40i6gDkmRTugc7vtvCGUc0Dv/6LQwaOeCCn7/fWVYR/MRiqb3mfguS5AEKkiTrTovFBBGNakBS4hdcUBPPD059duwQAZLdeyoCZOq8yZez5cj2C6sITrHY6qxJv0VWpJeUH3vab0Hjh9erAkf3LuWCmHh5/lcRSNCxZwdl/l1tGhH59Itpl4Jy5TjBKoJfWay9raGugftIp9NNYU99V82q5eDQTnriZwS4VLlpRG3w8/eFYTFRkHw2iTONiLCK4LzTz4mtgUOMmupYJGWsWvs67Dfz5Q1SFrqog5RIf3ZtmQNlyxaDkNB8MG/FTM4wInL8/HcQFT3ohMFg+IPF4DpGqDowSemrIKdTPoEbb2Jj+imj1urAJDKWBbNGK9OHjZqFw94fdnCmEZHvfvsW3mrbLIl1C66ymBzGMKnilJQOGiXZrK6mb9aECz9v4gKRyDwu/5YAHdo1VroFuIZAbRhR2bhnzeWcuYOOsNj8kVFDHbCktFEhp0M+nzXQH9Ysj+WCj3Aftm+YCaGhwVClZmVI/H4rZxhRGT72g+91et0FFqufav57wxXpBTTYZrW4ur4TkeFbbokX49afu6BX95bgH+AH0+dP5swiKvt+TLwRWij/fhazJxkV1YFMej7JDof9mK/TTk99D2XjqmmQPXsg6ytHKMtu1YYRlSGjBx3QarWXWAx/xDCoA5v0dIXJsnTnjeqvKvvb1YFFeA5/nY6H8PrVoFCRUNi4dw1nFlHZemjjBb8AP5wuxDwMOdUBTvoP6fX6aIvFDGNH9eaCifBcPhrRW9lx6E1dgmPnDt+rWafaVhbWOGVI6waeIr0s2/b7+cpKPjx1ABGeTzy7rzhd2K1PZyVph9owohIzJXqfj4/PRc39HASkJyi70ylfLVW8EJw5/niyTEIs8P6WKlUUajcIUzbeqM0iKqz7c9psNh9nsb5QQ2sGHlNp1t+/3TyilpLoUh0whHhgmrIG9apBidLFYFfyNs4sonLw5z1XA7MGYAbnHYwAtRG8UU1tNosrakBHLkgIsbl3ZR+826MV5M6TE9bv+oYzi6gk/5F0u2TZ4ltY7ONWY69eRhxptZhhzvShXHAQ3kPs2AEQkMVf+FRkapq/3XQj88A5RnG1MYSXVqsdbrNaKFEHoTDv0xHg5++EJesWckYRmR6RXTczO+DBLuXVHhFWBoN+kmSzwLZ1n3KBQHgvmIbM6etQThNSG0VkBo0ciElJ/2JUVVlFPJnMppmyLMGe+LlcABDEmuWTvbISiI4dgUediV0J4JMfzU9JO4jUWL08VqkE8GAPtVFE5pFKAM86FEvY58dm/96EedwNJwg1S+d/rIwJrEpYzhlFZAYO7x/P7II7CoupPeTJ6ocDflvXUp+feHbmzBimpCXfsHs1ZxSR6dq3Cw4M4uxAfrWRPFFNrVYzjfYTL8TEjyMhT95csOe4+OcSPErTlo1xivAHhp/aUJ6ksrjIh+b5iZehZ9fmUKpsCSUFl9ooIlOs1P9hd2CrxkNTkWeX7bbbH9AKP+IlwRWD9etWgboNaykJOdVGEZXks4f/8c/iv495aZ7aXO4uvcNhv4Jr+9U3kyBehL//2AElSxSG7pFdOKOIzIETuy6bTCbMNThQbTK3ld1u21eqRCHa2EOkKb8dWwtZsvjDjM+ncEYRmXWJX+PJRJ6xRkCr1Y7xdcq0pZdIF+JXzwBfP4dXZRZCRk4cvofZ6ywju9pz7qQw3NxD031EevLRiHeV9GLelGMQqVKj8jbmMcQtDyp1sqb/nfHRfbgbRhBpTaMG1fEob84kInPsXNJdXz/nYea1kWrzZbpku5SMCTzVN4og0oNLv8ZDUFA2mDJ3EmcUkdmyf+0fD8YD3Gr3YBT2+8+fpOy9RMaB4wH+/r5ec1T5v/T7sA+eO4CLhKxqI2aGClmtZhfl7Scyg8jebaFS1de8an0Aki8k+FvmvalqM2a4HLJ0AU/sUd8YgsgIcKq52CsFYdjYDziTiMzuY9uv6XRaTCRSRe3JjFR0tkB/Oq6LyFS+3b5A2T7sbV2BQSMHfsc8mKzJpKXCQXhe39oVtMmHyHz69GoNb9SpzplEdLLnyHaUeXGI2pzpLrvdeqJZ4zDuRhBEZoBpxvPkCYJP5kzkTCIyaxNXXfTx8bnCLBmi9mh6qo1dssGfpzZzN4IgMosNX01hT8SskPTLPs4oItO4ecODzJOr1CZNL2kdDiklNqYfdwMIIrNpUK8q9OjXlTOJyLAK757eoMcsQuk/IKjVaqfkyxsEdy7t5QqfIDKbn5JWguywQ8LBjZxRRGbgsEhcF4DrA3zUnk1LBeDAHza11AVPEO5C33fbQL0363AmERk8aFV2yL8wj7ZUmzbNZDKZNr9RrTxX4AThTlz9fZuybXjZ+i84o4jM1HmxZ318fE4xqxrU3k0LBVnMJhel9CY8gfFj+kKlqhU4k4hOtuxZTzKvtleb96VlNpt3hNetwhU0QbgjKecTIVu2LPDFN/M4k4jMtPmTL7BWwAlmWZ3awy+jYLPZCN/vW8oVNEG4K5+MGwjlK5blTCI6gVkDfmGebaM28QuLmT8xolFNroAJwp3BfQI5c2bzumPGYmeO/5O1Ao5r0mhGIAD7/kmJ1PcnPI/J4wZAlRqVOJOIDO6MdPrKmD6srtrMzy2tVru4coWSXMEShCeA2YQxh+Dq7Ss5o4jMgKF9sQJYr/bz80ovSda7NO9PeDLvR3aAJi0acSYRGVwOrTforzEPF1Sb+nk0Jn++XC51gRKEJ3H2x/Vgt9tg55F4zigi8+Zb4bgmYIra1M8sh8N+NS52MFegBOFptG5RH94d0IMzichs3r/Oxbrw2Ap4odRhFXDq79pZSvZBeD6Jm2ZDUK4cypJZtVFEJjgk76/My63U5n6qTCbDzrYt63MFSRCeSqFCITBz8XTOJCIzctyHV3x8fDap/f00GTHR5574uVwhEoSnMn5MJITVq8mZRGQOndoLOr3uBvN0LrXJU9OAvLlzcAVIEJ7MX6fjwWazwq7kbZxRRKZKzcrYDXhfbfL/lGS1nBw2uAtXgATh6dSvVw2GxURxJhGZuIVT7uj12kNqn/+XrGaT0XX8wAqu8AjC0/lidjSUq1CGM4nIHDlzAAxGQwrzdh612Z+kqPwhNPdPiAmuDJQkm9elEK9Y9bUzzNvvqc3OyW6znhr9YQ+u4AhCFN58MwyGjBrImURkJn027rbeoN+l9rtaWqvF7DqyZwlXaAQhCovnjvG6bcLKbIBO+w/zuK/a9I+qRYC/kyswghCJy78lgMVihgMnd3NGEZkChfP/wTzeRG36h9LpdJvatWrAFRhBiMarr5XyukNEukd2wWXB09W+fyin057y5cKxXGERhGiMHNYLmrZuwplEZJauXwhGo/G02vf/KlCv1ykZVdWFRRCigQlusuXIyplEZJLPHQaTyYTTgXnV5kdFFqDpP8JLcF3dD75+Tti0by1nFJEpUbb4ec2Tzg5g/f/4ru804QqKIESldu0q8PGU0ZxJRKZ73y64L2Cy2v+s/y9fWzQ7miskghCVUcPfhWZtIjiTiMyspXFgsVgOq/2vNxoN8GvyGq6QCEJUdmyYBfkLhnAmEZn9P+3C9QC3mefNj1YAYQ6HxBUQQYjMrT934aCYYgq1UUQmS9Ysl5nnyz1aAYyrUL44DQASXkfRVwrC56vmciYRmcrVK15knu/w0P06nW77e91bcoVDEKLTokUDiIoexJlEZLr37XKL2X78wwrAIUsX58UN5wqHIERnzOi+XrcgKHbmeLDZLNseVgCSZL1Hp/4S3sj6VdOgWKlXOJOIzNqdq8BsNv/5r//NWq0PXD9H2X8J7wPPDLBJNs4kIvP974fAx8fnnuZBuvDX7ZKVKxiC8AZwRaDZbII9x7dzRhEZh6/jOvN+IawA+hQKzUszAITXUiA0Hyxb/wVnEpEpWCT0EvN+LawAZterXZkqAMJreSOsMkz8dCxnEpGpUacargXohBXAtr69WnOFQhDeQqdOzSEy6j3OJCLzTs92mB1olIb1f46PHdWbKxSC8BaGftgL2nZuzZlEZDAnotFsnKOR7dIfc6YP5QqFILyFKbFR0KBJXc4kIhMzNRpsdts6ja9T/vvrJRO4QiEyBjy0MmFNHKScT+SuERnDks/HQaWqFTiTpMbKLUthwcrZHBt2r1YSb6h/392IWzgVZIf8rUaWpdu7Ns/mCoVIf3489CXOxwLri8GMSXQMe2YRv+4zKFq8CGeS1ChdvpRy356EXZbcfkxhybqFINmlkxqb1UKnAGUSgyLbg8lkhPz5ckGJYqHcdSJjOLJvGeTImYMzSWr8WwHgPoKPPhml0HdIb+jYswP7W9mVa4NG9Ode5y5gS8VqtfyFg4CuX77/hisUIn25e3kfBOUIhBpVy8EHAzsqAbN7yxzu94j05+ejX4N/gB9nktT4twJ40kGjO4/Eg8VqwW233DV3YeuhTZgg9LoGE4Gc+2kDVyhE+rJmeawSQDgDk7x/mfLvti3qcb9HpD+4HBib7WqTpEZqFQBSvFQxpXuHy27V19yBxO+3gt6gv6nR63TKscnqQiHSlyYNq4NWq4VT7OmDP5cpWQQsFhPdi0wAyxwTg6hNkhqpVQDfntgNslN+7nGFjGT/j4mYGeiOBmspPDBRXShE+nHhZ2x+GaDa62Ue/r8p4wYoATU+ug/3+0T6ghvhsDJWmyQ1njQGgPT/sA+EhObDATYlD7/6de5C0i/7sIXi0uCX+Ofibq5QiPRj4kd9leB5NAfDpV/jwWw2Qmj+3MoGFfVriPQD4x/vx/NM36U2C4DgugJ33mB09MzB+5+VWgAZzytF84Nks3Ll/laTMOWmbP56GvcaIv3A+/CiLYCp82IfrgGYt2ImRE8aAY2ahSt/LyhXDtj3w07ute7AwxYAjQFkLPu2zueeFmpwfED9OiL9SOsxAKR7ZBfles/+3bhr7gBWTEp2YJoFyFi6dYxQAgMPYRk2qDNH9mwBYDDolZFp9WuJ9AHjH/vsapOkxtMqgBUbFyvXq9euxl1zBxKPJoDBaLhJ6wAyEFzu63TYIUf2LMo6APV1ZHC/DkrgjBjSlbtGpA+nWPz7+ftyJkmNp1UAk2dPUK43bt6Qu+YOJBzcgK2ea7QSMANZOGuUEhSRqWy//ilppTJ/nDtntv+sJIi0JZnFf/agbJxJUiO1CmDR6vlK/x+vz1oyg7vuDqzf9Q2uBLxIewEyEFz1h0HxtASsr1e8H1yrFtMmrYxgx+Y5UKhoQc4kqfFvBYAVB5odwdOG/x3HQdp1bcu9zl1YvPZzsMv2k7QbMIO4cmarMu/fIqIWd03NlwvHQtXKpZUxAfU1Iu1ZsXgivFq5PGeS1GjTsSWUq1iWIzyiPnR+9x23TzE2fcEnuBtwH+UDILyeuGnDoE7DWpxJRGbM5FGYD+AbyghEeD2jRvSBFu3e4kwiMgOGRYLJbPqMdVUoJyDh3bz77tvQo19XziQi06H723eY94djBUBZgQmvpmGjMGUFn9okIlMtrMpVzYMDQulcAMKrKVGyKMz/chZnEpHJVyDfFeb9algB0MlAhFeDi4C2fLueM4nIWG3WFOb9YKwA6GxAwmvBuNfpdZB8NokziagcOrUXNyvh2YB6rADodGDCaznA4j533lycSUTmq/hl2AI4p5gf5ZCli4/uTScIb+GzGSOgZp3qnElE5uMpo0GSpY0PKwCdTrf9ve4tucIhCNHp2bON100BtuvS5jbrAox4WAEwjatQvjjNBBBeR9Vqr8HkWeM5k4hMqbIlcQYg4tEKIMzhkLjCIQjRyRIYoOTIV5tEZOwOCWcAQh+tAPSYGOTX5DVcARGEqJxm8Y7pwI/98ey5AD0dPA/AYDBgBaB9tALQOJ3ytUWzo7lCIghRmT8rGipVq8iZRGQmxMVgyvLEx8yP0ul08ZimSl1IBCEqnTo1h94De3ImEZnm7Zrd0mq1H6r9j4osEJKLBgIJr+H/ihVSMvmqTSIyefPlwT0A1dXmRwXq9Tq4+vs2rqAIQjQwzjETMKbHVptEVA6c3I2rHnEXoE1tfkVOpz0Fs9GoC4sgRGPJ5+OgzKulOJOIzJS5kzAL0CG17x9Kp9NtateqAVdYBCEabds2hj6D3+VMIjKNmze8yfr/Q9S+f1QtAvydXGERhGjkCMoGK7cs5UwiMr5+vjeYx0uqTf+otFaL2XVkzxKuwAhCFA7vWQpZsmaB4+e/40wiKqu3r8TTpy8zj/uoTf+Y7DbrqdEf9uAKjSBEYdiHvaBJyzc5k4gM6+7cs9ksC9V+f5Ki8tN0ICEwRV8pCDMXT+dMIjJ58+W5xrxdW232J8lqNhnptCBCSPAUIKevE77//RBnElHBU4BMJtPfzNsGtdmfKMlqOTlscBeu8AjC0xkyuBs0axPBmURkeg3oftdms81X+zw1DcibOwdXeATh6YQWzAdzln/GmURkgnLluM48XVNt8tRktFrNrj3xc7kCJAhPZdeWecr5fcnnvGf339L1C/EQ0L+Yp3Vqk6cqk8mws23L+lwhEoSn0rpNI6/L/tOoWfgto9E4Su3vZ1EFs9kI185StmDC88E4luwSJBzcwJlEVA7+vAcH//5hXs6jNvczyeGwX42LHcwVJkF4GlMmRUHl6pU4k4jMiHFD8QjwHWpfP4/G5M9HawIIz6dI0VCYOi+WM4nI5AnOjVN/jdSmfh7pJcl6d8NXU7gCJQhPYe3KqbgQxqtSf81aGoe5/3/XqFN/Pa+0Wu3iyhVKcoVKEJ5C1aqvwrCYKM4kIlPm1dI3mHe7q/38IgqwmE2upEQ6OYjwPA4mLlLO/ks6vZ8ziaisSliOg3+49NeqNvMLyWw2JkY0qskVLkG4OxERdbxu6q92g7CbzLOj1T5+GQXjlOD3+5ZyBUwQ7soRFq8Opwz7f0zkTCIqa3Z8hU9/TPvtqzbxS8lsNu8Ir1uFK2SCcFfCw2tCr/7dOZOITPXaVVOYV19o4c/TFIRjAXSKMOEJ4Km/vn5OJRGm2iSigqf+sqc/rvuX1eZNE7E/vvmNauW5wiYIdyMsrDJERr3HmURkKrz+WorRaIxS+zYtFWCzWly0LoBwZ3DeP3tQNq8a+Vfm/a2Wi5q0Gvn/L2m12in58gbBnUt7uYIniMwG4xK3/I6f8TFnElFJPpsEOXMH3dDpdC3Vfk0PaR0OKSU2ph9X+ASR2UyI6Q+lypX0qoSfQ6Lfd0l2KUnztISfaag2dskGf57azN0AgsgsMB79/J2wYuNiziSisuf4drBJtlvMk2XUJk1X2e3WE80ah3E3gSAyi2ZN60KLt5txJhGZOg1r37LbbXPV/swIBeGA4NoVk7kbQRAZzTfLJ0PW7IFeNe332aLpOPB3SZNe037PoOhsgf5w/RwlDSEyD4y/nLmyw7T5kzmTiMqhU3shS2DATebBhmpTZqgcsnSh6zsR3E0hiIyic6e3oHZ4GGcSkWnRrtltu2xfo/ZjZqgQJhBdszyWuzEEkd58s2wyBGbNAruPbedMIiqffjENm/5XmPeyqM2YWYrydcpw/uRG7gYRRHqB8caawV51ys+u5G0gO+zY9H+mU34yTLJdSn6j+qvcTSKI9AKX+7bt3JozichUrPLaTbvdHqf2nzvIabfb7oyP7sPdKIJIa2Ki+0Jo4QLw3W/fciYRlfeH979ns9t+Zl4zq83nLgqzWsywde2n3A0jiLQinsUX7vTbsHs1ZxJRWfDVHDCbTTeYx0LVpnMrabXaMTgecOb4Wu7GEcTLgnEVyPr93jTlt/3wFkxsckun071Uht8ME+sK7CtVohD8c3E3dwMJ4kXBeCpbthh069OZM4moHD1zEIoWK3KTNf3Hqn3mztI7HPYrzSNqcTeRIF6U5m/VhddrVPKq9N713qzzj122b9e8bHrvTFB22W67/cGAjtyNJIjnZcjATlCoaEHluCu1SUSlR2TXe5JdOsG8ZFeby1NU1mazuOZMH8rdUIJ4VmZNH6ac6rstaTNnElEZM3kUHuyB6/xzqk3laWpqtZph3Ze0aYh4ftayuMERf8x1rzaJqODCJovFjJl9i6vN5KnqZ7NaaHqQeC5wus/p64C5K2ZyJhEVnO5j5seVfjXUJvJoabXa4ZLNAnsT5nE3miDU7Imfr5g/buFUziSismz9F2CxWnC6r77aP0LIYNBPkmUJKLU4kRoHWXz4+/tC7MzxnElEBVN6S3bpltGoe0vtG6FkMptmYiWwJ34ud+MJYveWueAf4AsxU6M5k4jK0vULFfMbzIZ2ar8IKWwJYHdg2zoaEyD+x9Z19/v83vTk/3zVXKXZL/yTXy0cE8CBQZodIJC1X37idX1+ZbRf5D7/MygSNw/ROgHvZta0oYr553nRaD/O85vNyiGe1dWm8DY1xcVCUbRi0CsZzO57tuyBXjXP371vl3uW+8k8hZnnf1mVlmXpNu4doA1E3gHe5xZv1YXCRQsqu93UJhER3NhTr3EdzOV3ksV8kNoE3q7sTqd8tVTxQrSVWHDw/pYt84qyscdb1vZjJVfklcI3Zae8Q+PBa/vTW3pZtu3385UhYU0cFziE5xPP7ivu58ctvd6yq2/BytnAjI8HeIzTeOCuvgyXXq+PtljMMHZUby6ACM8lZtR7ymDfdC9K5jFgeKQLB/t0Ol3m5u/3QIXJsnQHE43+cYKyDXsyeP9qhVWCQkVCvSaNV+L3WzGB5y3W38ccfu6dxsuNJTsc9mO+TjvQuQOeyeplkyFLFn8le++RMwc4o4gI5u2XHfZbLHY/ZTFsUgc16fk1GM8hxBOI6BgyzwDvU9dOzZRDO2YtmcGZRETwuK4W7ZvdsdqsV1nM1lIHMenlVMjpkM9nDfSn1oCbs5rdn5w5s0HdhrW85sQefOoHBAbckh0yHtflNif2iKhRks3qavpmTbjw8yYu+IjMA+9Hs4jaSvYebxnowwquTnitfx5k7wlXByspfRTkdMon7JIVYmP6wZ1Le7lgJDIOLP+JMf3B188BLdq95RVHdCefTYIho9/HtF23ZKc8T5OJR3R7s1r7Ouw38+UNgvUrP+ECk0h/1rFyDw0NhtLlSsKXm5ZwRhERHNPIlSfnTYfT8R2LwdLqoCRlsHQ63RRJsrpqVi1HyUYyCCznsDcqQo6c2WH8jI85k4gIJu2oUOW1WzbJ9heLuZbqOCRlrvwsFvMWi8UE4fWqwNG9S7mgJV4eLNdG4TWURJ2RUe/B4V/FP5tv9Y6VUKN2tVt4NJfZbP6AxZpFHXwk91EQaw3sxIogolENSEqkFkFagOXYtEktZSXfuwN6eEU/H3co1m4Q9g+u5LNK1lEa6ud7lIIlybKLtQpclSuWpMQjLwiWW7Wq5ZUcfT37d4P9PyZyRhENTNRR5tXSKcz41602azSLJV91cJE8R06DUbdElqV7+UNywfSJg+DaWVpMlBpYPtNYORUunB+CQ/LAsJgo4Y/hxl2Jw8Z+AHmCc6dIdums1qDtoXHjY7hJzy89I9rfz3nVZDJCu1b1YfeWOVzwezNYHu3bNAKbzQpVa1ZWTuAVfcfeknULoXHzRreNRuNtXz/nThYjuGmHduwJrvJWizlRsllcefPkgKGDOsPxAys4Q3gD+L3x+xcMDYbsObIqzfythzZxRhGJ9bu+we/pCsoVdAMX8Fit5tEsJnKpg4QkvrBVEOlw2E9ZzCbIny+Xa2RUNziyZwlnFJHA7/fBwE6QK2c2wNZQkVcKu0ZPGiH003719pXQ+/2e2MT/22Qy/S3J0kLN/Xx89LQnKcL+3mCnQzrNngiuAH8ntGsdDssXxHj8mAF+fvweLZvWdjmddhczvctg0OGps1GMBgaDYS5rAv/lcMrXw5vUvTJ59gSPz9SDnx+/R5MWb7KmvW+K1Wq5IsvSIs39TTpY8ZNIqaqFwaDf4u/nSNHptFAgJLerW8cIWDQ7Gk4nr+ZM5k7g58PP+c7bjVzBeYNcOq0WWJfnb/adNuL3Un/RR1SSMdhisezVarV3cubOeSmidZNrE+JiIOHgRs5k7gR+PvycLdu/dTs4JM91ds/uOn0dSXqjHuft8XuRSC+sQEakXq+LZxXCNaPRALLdBpVeK+F6r3tLmBc3HA7uWJjhW5Xx/fB98f17dW0Or5Z7xSVJVmAVF9hslsvsM2/Gz/3g8z+vbJr7TeQoViEk6A36FNZfTilRptjFNh1b3fx4ymhYuWWpsgVWbcb0BN8P3xff/+0ube6WebX0NZtku2kwGm76+jl2afXaDx98bvz8JFK6qR4jRqfT7fDzc1xiFcJd9jPgBqXCBYNd9WtXdvXv3RY+Gt4L5s4YBquXTVLyHJ46+vVDfjv2ePJT/PnR6/j7+Dp8Pf6dPj1bQZ03KrpC8+dx4clK+H7sv3fZ0/0C+/d2/DwPPld6qTCjMWOE2WxeyyqEM+zfeLhFSnBI3ktValS+3L7b27f6fdAHPvpklHLIB+bDiz+w4SHbkjY/Zmj8+dHr+Pv4Onw9/p2OPdq7qoVVuR4Smu8qez88NReP0Trr9HNsYa2UkQ8+D34uEinThQNKrzP6MGYzEiwW8wmHw36OVRI3WCVxhz2h7yEseBUDq8H/r/yOzXqPVSZ3ZNn2N77ex8fnB/x7D/4u/n18H3cYwPJhBDOqMTowhrLvMNMu21fZ7LZ9Vsl6khn3AntK/4ndCs2Tv/MdvK5gt/3Mmu4H8fVmqxl32Q198Hfx7+P74PuR0kj/D0tMOZTnhqEcAAAAAElFTkSuQmCC"},695:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"relation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[t._v("#")]),t._v(" Relation")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("Relation")]),t._v(" objects describe the relation between two competencies within a Competency Framework, allowing:")]),t._v(" "),s("ul",[s("li",[t._v("Competencies to be organized into hierarchies")]),t._v(" "),s("li",[t._v("Prerequisite relationships to be established")]),t._v(" "),s("li",[t._v("Creation of equivalences across frameworks.")])])]),t._v(" "),s("p",[t._v("Relations in CASS exist outside of (but can be referenced within) competencies and frameworks, so that frameworks may reuse competencies and rearrange them in a different structure.")]),t._v(" "),s("p",[t._v("Relations can, therefore, represent a relationship between two competencies within the same framework or two competencies in separate frameworks. Relations can also be considered independent of a framework.")]),t._v(" "),s("h2",{attrs:{id:"relation-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation-types"}},[t._v("#")]),t._v(" Relation Types")]),t._v(" "),s("p",[t._v("Relations are directional and labeled. Let's look at the different types.")]),t._v(" "),s("h3",{attrs:{id:"narrows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#narrows"}},[t._v("#")]),t._v(" Narrows")]),t._v(" "),s("p",[s("img",{attrs:{src:a(625),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Narrows B states that the entirety of the task in A is contained within B and that A helps describe B. This relation can also be stated as “A is a subcompetency of B”. With set theory we could say that “A is a subset of B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to think of an indented list:")]),t._v(" "),s("ul",[s("li",[t._v("B\n"),s("ul",[s("li",[t._v("A")])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition narrows Basic Arithmetic")])]),t._v(" "),s("h3",{attrs:{id:"requires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(626),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Requires B describes a relation where it is necessary to hold the competency B before the competency A may be obtained. As opposed to a Narrows relation, A and B are logically distinct. B may be involved in the steps to complete A, but it does not help describe A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to consider a sequential checklist where all previous items must be completed before the current item.")]),t._v(" "),s("ol",[s("li",[t._v("B")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication requires Addition")])]),t._v(" "),s("h3",{attrs:{id:"equivalent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#equivalent"}},[t._v("#")]),t._v(" Equivalent")]),t._v(" "),s("p",[s("img",{attrs:{src:a(627),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Equivalent to B describes a relation where two competencies represent the same capability in all aspects. The wording may be somewhat different, but there should be no distinction between these two competencies.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to append additional names.")]),t._v(" "),s("ul",[s("li",[t._v("A ("),s("em",[t._v("also known as B")]),t._v(")")]),t._v(" "),s("li",[t._v("A ("),s("em",[t._v("aka B")]),t._v(")")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition is equivalent to Sums")])]),t._v(" "),s("h3",{attrs:{id:"related"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#related"}},[t._v("#")]),t._v(" Related")]),t._v(" "),s("p",[s("img",{attrs:{src:a(628),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Related to B describes a relation where two competencies involve some degree of overlap such that interest in A may be followed by interest in B or visa versa. With set theory we could say that “there exists an intersection between A and B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it may be useful to annote with “Did you mean” or “Related: ”, or augment them in search results.")]),t._v(" "),s("ul",[s("li",[t._v("A\n"),s("ul",[s("li",[s("em",[t._v("Related:")]),t._v(" "),s("ul",[s("li",[t._v("B")])])])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Division is related to Grouping")])]),t._v(" "),s("h3",{attrs:{id:"desires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#desires"}},[t._v("#")]),t._v(" Desires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(629),alt:"Image"}})]),t._v(" "),s("p",[t._v("A desires B describes a relation where B is not essential to the acquisition of A, but it may be desired, lightly assumed, or implied by the declaration of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similarly to Requires, but ensure the individual knows it is optional.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("optional")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication desires Subtraction. (for some strategies)")])]),t._v(" "),s("h3",{attrs:{id:"is-enabled-by"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-by"}},[t._v("#")]),t._v(" Is Enabled By")]),t._v(" "),s("p",[s("img",{attrs:{src:a(630),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Enabled by B describes a relation where the acquisition of B speeds or makes more probable the acquisition of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similar to Requires, but as a recommended option.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("recommended")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: English Speaking enables English Writing")])]),t._v(" "),s("h2",{attrs:{id:"computational-complexity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#computational-complexity"}},[t._v("#")]),t._v(" Computational Complexity")]),t._v(" "),s("p",[t._v("There are several methods to consider when determining competence. Consider:")]),t._v(" "),s("ul",[s("li",[t._v("Basic Arithmetic\n"),s("ul",[s("li",[t._v("Addition")]),t._v(" "),s("li",[t._v("Subtraction")]),t._v(" "),s("li",[t._v("Multiplication")]),t._v(" "),s("li",[t._v("Division")])])])]),t._v(" "),s("p",[t._v("Addition, Subtraction, Multiplication, and Division all have a narrows relationship with Basic Arithmetic.")]),t._v(" "),s("p",[t._v("If a person holds all four sub-competencies of Basic Arithmetic, do they also implicitly hold Basic Arithmetic?")]),t._v(" "),s("p",[t._v("An optimistic strategy assumes that it is aware of all information about a particular competency. It would conclude that the person does hold Basic Arithmetic because Basic Arithmetic is only composed of its sub-competencies: "),s("em",[t._v("Addition, Subtraction, Multiplication,")]),t._v(" and "),s("em",[t._v("Division")]),t._v(".")]),t._v(" "),s("p",[t._v("The pessimistic route presumes there may be additional unidentified information about a competency (such as undefined competencies) and could make no determination about Basic Arithmetic based on the holding of its four sub-competencies. (Note: However, a pessimistic process may conclude that that the person does NOT hold Basic Arithmetic if there is an explicit assertion that the person does not hold one of the subcompetencies.)")]),t._v(" "),s("p",[t._v("It is important to understand the possibilities and potential issues and to have a clearly defined goal as these relations are subject to interpretation. See "),s("RouterLink",{attrs:{to:"/dev/fundamentals/assertion-processing/"}},[t._v("Assertion Processing")]),t._v(" for further information.")],1),t._v(" "),s("h2",{attrs:{id:"creation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAlignment")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("target "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relationType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Relation"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("NARROWS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h3",{attrs:{id:"adding-a-relation-to-a-framework"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-relation-to-a-framework"}},[t._v("#")]),t._v(" Adding a Relation to a Framework")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRelation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h2",{attrs:{id:"save"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that validates expected fields before saving.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that deletes the alignment. This does NOT DELETE any objects referenced by the alignment.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for retrieving an Alignment, automatically decrypting it, automatically encrypting it on save, and casting it to the EcAlignment object. The blocking version locks the thread while this occurs.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for searching for Alignments.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for alignments")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 alignments that originate from a competency.")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token template-string"}},[s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('source:"')]),s("span",{pre:!0,attrs:{class:"token interpolation"}},[s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("${")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("}")])]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"')]),s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{625:function(t,s){t.exports="data:image/png;base64,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"},626:function(t,s,a){t.exports=a.p+"assets/img/relation-requires.1be62180.png"},627:function(t,s){t.exports="data:image/png;base64,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"},628:function(t,s){t.exports="data:image/png;base64,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"},629:function(t,s,a){t.exports=a.p+"assets/img/relation-desires.341aa591.png"},630:function(t,s){t.exports="data:image/png;base64,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"},694:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"relation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[t._v("#")]),t._v(" Relation")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("Relation")]),t._v(" objects describe the relation between two competencies within a Competency Framework, allowing:")]),t._v(" "),s("ul",[s("li",[t._v("Competencies to be organized into hierarchies")]),t._v(" "),s("li",[t._v("Prerequisite relationships to be established")]),t._v(" "),s("li",[t._v("Creation of equivalences across frameworks.")])])]),t._v(" "),s("p",[t._v("Relations in CASS exist outside of (but can be referenced within) competencies and frameworks, so that frameworks may reuse competencies and rearrange them in a different structure.")]),t._v(" "),s("p",[t._v("Relations can, therefore, represent a relationship between two competencies within the same framework or two competencies in separate frameworks. Relations can also be considered independent of a framework.")]),t._v(" "),s("h2",{attrs:{id:"relation-types"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#relation-types"}},[t._v("#")]),t._v(" Relation Types")]),t._v(" "),s("p",[t._v("Relations are directional and labeled. Let's look at the different types.")]),t._v(" "),s("h3",{attrs:{id:"narrows"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#narrows"}},[t._v("#")]),t._v(" Narrows")]),t._v(" "),s("p",[s("img",{attrs:{src:a(625),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Narrows B states that the entirety of the task in A is contained within B and that A helps describe B. This relation can also be stated as “A is a subcompetency of B”. With set theory we could say that “A is a subset of B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to think of an indented list:")]),t._v(" "),s("ul",[s("li",[t._v("B\n"),s("ul",[s("li",[t._v("A")])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition narrows Basic Arithmetic")])]),t._v(" "),s("h3",{attrs:{id:"requires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#requires"}},[t._v("#")]),t._v(" Requires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(626),alt:"Image"}})]),t._v(" "),s("p",[t._v("A Requires B describes a relation where it is necessary to hold the competency B before the competency A may be obtained. As opposed to a Narrows relation, A and B are logically distinct. B may be involved in the steps to complete A, but it does not help describe A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to consider a sequential checklist where all previous items must be completed before the current item.")]),t._v(" "),s("ol",[s("li",[t._v("B")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication requires Addition")])]),t._v(" "),s("h3",{attrs:{id:"equivalent"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#equivalent"}},[t._v("#")]),t._v(" Equivalent")]),t._v(" "),s("p",[s("img",{attrs:{src:a(627),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Equivalent to B describes a relation where two competencies represent the same capability in all aspects. The wording may be somewhat different, but there should be no distinction between these two competencies.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it is useful to append additional names.")]),t._v(" "),s("ul",[s("li",[t._v("A ("),s("em",[t._v("also known as B")]),t._v(")")]),t._v(" "),s("li",[t._v("A ("),s("em",[t._v("aka B")]),t._v(")")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Addition is equivalent to Sums")])]),t._v(" "),s("h3",{attrs:{id:"related"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#related"}},[t._v("#")]),t._v(" Related")]),t._v(" "),s("p",[s("img",{attrs:{src:a(628),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Related to B describes a relation where two competencies involve some degree of overlap such that interest in A may be followed by interest in B or visa versa. With set theory we could say that “there exists an intersection between A and B”.")]),t._v(" "),s("p",[t._v("When presenting this relationship, it may be useful to annote with “Did you mean” or “Related: ”, or augment them in search results.")]),t._v(" "),s("ul",[s("li",[t._v("A\n"),s("ul",[s("li",[s("em",[t._v("Related:")]),t._v(" "),s("ul",[s("li",[t._v("B")])])])])])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Division is related to Grouping")])]),t._v(" "),s("h3",{attrs:{id:"desires"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#desires"}},[t._v("#")]),t._v(" Desires")]),t._v(" "),s("p",[s("img",{attrs:{src:a(629),alt:"Image"}})]),t._v(" "),s("p",[t._v("A desires B describes a relation where B is not essential to the acquisition of A, but it may be desired, lightly assumed, or implied by the declaration of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similarly to Requires, but ensure the individual knows it is optional.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("optional")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: Multiplication desires Subtraction. (for some strategies)")])]),t._v(" "),s("h3",{attrs:{id:"is-enabled-by"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-by"}},[t._v("#")]),t._v(" Is Enabled By")]),t._v(" "),s("p",[s("img",{attrs:{src:a(630),alt:"Image"}})]),t._v(" "),s("p",[t._v("A is Enabled by B describes a relation where the acquisition of B speeds or makes more probable the acquisition of A.")]),t._v(" "),s("p",[t._v("When presenting this relationship, present it similar to Requires, but as a recommended option.")]),t._v(" "),s("ul",[s("li",[t._v("B ("),s("em",[t._v("recommended")]),t._v(")")]),t._v(" "),s("li",[t._v("A")])]),t._v(" "),s("blockquote",[s("p",[t._v("Example: English Speaking enables English Writing")])]),t._v(" "),s("h2",{attrs:{id:"computational-complexity"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#computational-complexity"}},[t._v("#")]),t._v(" Computational Complexity")]),t._v(" "),s("p",[t._v("There are several methods to consider when determining competence. Consider:")]),t._v(" "),s("ul",[s("li",[t._v("Basic Arithmetic\n"),s("ul",[s("li",[t._v("Addition")]),t._v(" "),s("li",[t._v("Subtraction")]),t._v(" "),s("li",[t._v("Multiplication")]),t._v(" "),s("li",[t._v("Division")])])])]),t._v(" "),s("p",[t._v("Addition, Subtraction, Multiplication, and Division all have a narrows relationship with Basic Arithmetic.")]),t._v(" "),s("p",[t._v("If a person holds all four sub-competencies of Basic Arithmetic, do they also implicitly hold Basic Arithmetic?")]),t._v(" "),s("p",[t._v("An optimistic strategy assumes that it is aware of all information about a particular competency. It would conclude that the person does hold Basic Arithmetic because Basic Arithmetic is only composed of its sub-competencies: "),s("em",[t._v("Addition, Subtraction, Multiplication,")]),t._v(" and "),s("em",[t._v("Division")]),t._v(".")]),t._v(" "),s("p",[t._v("The pessimistic route presumes there may be additional unidentified information about a competency (such as undefined competencies) and could make no determination about Basic Arithmetic based on the holding of its four sub-competencies. (Note: However, a pessimistic process may conclude that that the person does NOT hold Basic Arithmetic if there is an explicit assertion that the person does not hold one of the subcompetencies.)")]),t._v(" "),s("p",[t._v("It is important to understand the possibilities and potential issues and to have a clearly defined goal as these relations are subject to interpretation. See "),s("RouterLink",{attrs:{to:"/dev/fundamentals/assertion-processing/"}},[t._v("Assertion Processing")]),t._v(" for further information.")],1),t._v(" "),s("h2",{attrs:{id:"creation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c1 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c2 "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 2"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAlignment")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("target "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relationType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Relation"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token constant"}},[t._v("NARROWS")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h3",{attrs:{id:"adding-a-relation-to-a-framework"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-relation-to-a-framework"}},[t._v("#")]),t._v(" Adding a Relation to a Framework")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c2"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRelation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save these objects!")]),t._v("\n")])])]),s("h2",{attrs:{id:"save"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that validates expected fields before saving.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"delete"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),s("p",[t._v("EcAlignment has a helper method that deletes the alignment. This does NOT DELETE any objects referenced by the alignment.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("r"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for retrieving an Alignment, automatically decrypting it, automatically encrypting it on save, and casting it to the EcAlignment object. The blocking version locks the thread while this occurs.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("p",[t._v("EcAlignment has a static helper method for searching for Alignments.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for alignments")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 alignments that originate from a competency.")]),t._v("\nEcAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token template-string"}},[s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('source:"')]),s("span",{pre:!0,attrs:{class:"token interpolation"}},[s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("${")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token interpolation-punctuation punctuation"}},[t._v("}")])]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"')]),s("span",{pre:!0,attrs:{class:"token template-punctuation string"}},[t._v("`")])]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAlignments")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/27.a8e6e156.js.gz b/docs/assets/js/27.a895691a.js.gz similarity index 99% rename from docs/assets/js/27.a8e6e156.js.gz rename to docs/assets/js/27.a895691a.js.gz index 35327d02b..644c2cf5d 100644 Binary files a/docs/assets/js/27.a8e6e156.js.gz and b/docs/assets/js/27.a895691a.js.gz differ diff --git a/docs/assets/js/31.257c7def.js.gz b/docs/assets/js/31.257c7def.js.gz deleted file mode 100644 index 990a46f27..000000000 Binary files a/docs/assets/js/31.257c7def.js.gz and /dev/null differ diff --git a/docs/assets/js/31.257c7def.js b/docs/assets/js/31.fc1b5e7b.js similarity index 82% rename from docs/assets/js/31.257c7def.js rename to docs/assets/js/31.fc1b5e7b.js index b96186137..2666f5258 100644 --- a/docs/assets/js/31.257c7def.js +++ b/docs/assets/js/31.fc1b5e7b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{528:function(e,t,a){e.exports=a.p+"assets/img/user-configuration.5c0e0c9d.png"},529:function(e,t,a){e.exports=a.p+"assets/img/manage-default-owners.47c6a75a.png"},530:function(e,t,a){e.exports=a.p+"assets/img/select-default-owners.1e72e4ce.png"},531:function(e,t,a){e.exports=a.p+"assets/img/manage-default-readers.c6e7c9ba.png"},532:function(e,t,a){e.exports=a.p+"assets/img/select-default-readers.de910329.png"},658:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"managing-default-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-default-users"}},[e._v("#")]),e._v(" Managing Default Users")]),e._v(" "),t("p",[e._v("By default, the creator of a CaSS framework, competency, or other object is assigned as the sole owner of that record. By using the "),t("em",[t("strong",[e._v("user configuration")])]),e._v(" section of the configuration, other specified users and groups can be assigned as owners and readers to objects created in the framework/competency editor that use the configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(528),alt:"User configuration"}})]),e._v(" "),t("h2",{attrs:{id:"default-owners"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-owners"}},[e._v("#")]),e._v(" Default Owners")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the owner list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(529),alt:"Manage Default Owners"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default owners")])]),e._v(" dialogue window is displayed. Select the desired default owner entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Default owners can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(530),alt:"Select Default Owners"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])]),e._v(" "),t("h2",{attrs:{id:"default-readers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-readers"}},[e._v("#")]),e._v(" Default Readers")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the reader list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(531),alt:"Manage Default Readers"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default readers")])]),e._v(" dialogue window is displayed. Select the desired default reader entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Note: Default readers can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(532),alt:"Select Default Readers"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{550:function(e,t,a){e.exports=a.p+"assets/img/user-configuration.5c0e0c9d.png"},551:function(e,t,a){e.exports=a.p+"assets/img/manage-default-owners.47c6a75a.png"},552:function(e,t,a){e.exports=a.p+"assets/img/select-default-owners.1e72e4ce.png"},553:function(e,t,a){e.exports=a.p+"assets/img/manage-default-readers.c6e7c9ba.png"},554:function(e,t,a){e.exports=a.p+"assets/img/select-default-readers.de910329.png"},659:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"managing-default-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#managing-default-users"}},[e._v("#")]),e._v(" Managing Default Users")]),e._v(" "),t("p",[e._v("By default, the creator of a CaSS framework, competency, or other object is assigned as the sole owner of that record. By using the "),t("em",[t("strong",[e._v("user configuration")])]),e._v(" section of the configuration, other specified users and groups can be assigned as owners and readers to objects created in the framework/competency editor that use the configuration.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(550),alt:"User configuration"}})]),e._v(" "),t("h2",{attrs:{id:"default-owners"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-owners"}},[e._v("#")]),e._v(" Default Owners")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the owner list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(551),alt:"Manage Default Owners"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default owners")])]),e._v(" dialogue window is displayed. Select the desired default owner entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Default owners can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(552),alt:"Select Default Owners"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])]),e._v(" "),t("h2",{attrs:{id:"default-readers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#default-readers"}},[e._v("#")]),e._v(" Default Readers")]),e._v(" "),t("p",[e._v("Users and groups added to this section are automatically added to the reader list of any object created in the framework/competency editor that use this configuration. To manage the list of default owners, click the "),t("em",[t("strong",[e._v("manage default owners")])]),e._v(" button in the "),t("em",[t("strong",[e._v("default owners")])]),e._v(" section.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(553),alt:"Manage Default Readers"}})]),e._v(" "),t("p",[e._v("Once clicked, the "),t("em",[t("strong",[e._v("select default readers")])]),e._v(" dialogue window is displayed. Select the desired default reader entries and click the "),t("em",[t("strong",[e._v("apply")])]),e._v(" button in the bottom right of the dialogue window. Note: Default readers can also be removed in a similar fashion.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(554),alt:"Select Default Readers"}})]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("Users and groups can be differentiated by the type column icon and email address. All assignable users will have an email address and single person icon. All group assignable groups will display "),t("em",[e._v('"n/a"')]),e._v(" for an email address and a multi person icon.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/31.fc1b5e7b.js.gz b/docs/assets/js/31.fc1b5e7b.js.gz new file mode 100644 index 000000000..1f91a2383 Binary files /dev/null and b/docs/assets/js/31.fc1b5e7b.js.gz differ diff --git a/docs/assets/js/32.b414de84.js b/docs/assets/js/32.4a48bc75.js similarity index 99% rename from docs/assets/js/32.b414de84.js rename to docs/assets/js/32.4a48bc75.js index 9b5994199..264618558 100644 --- a/docs/assets/js/32.b414de84.js +++ b/docs/assets/js/32.4a48bc75.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{635:function(e,t,a){e.exports=a.p+"assets/img/cass-overview-comic.5b9fa605.png"},636:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_environment.a93d588a.png"},637:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_components.aa1759ed.png"},638:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_assertion_format.0217138d.png"},639:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_roles.d78926db.png"},720:function(e,t,a){"use strict";a.r(t);var n=a(69),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("Last updated 2018-12-12")]),e._v(" "),t("h2",{attrs:{id:"welcome"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#welcome"}},[e._v("#")]),e._v(" Welcome")]),e._v(" "),t("p",[e._v("We sincerely hope your development experience with CASS will be easy and enlightening. Perhaps some of the lessons learned and tools created during its development will benefit you on other projects. -- CASS Team")]),e._v(" "),t("h2",{attrs:{id:"about-cass"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about-cass"}},[e._v("#")]),e._v(" About CaSS")]),e._v(" "),t("p",[e._v("CaSS is open-source software that enables users and other systems to define, store, manage, and access data objects called competencies that are organized into structured collections called frameworks, and to report, store, and retrieve assertions about the competencies held by an individual.")]),e._v(" "),t("p",[e._v("CaSS consists of open source code that provides two basic sets of services intended for use by applications that support competency-based approaches to education, training, and workforce development. The goal of CaSS is to enable these applications to share competencies and related information about learners and learning resources in an interoperable and secure manner. The basic services provided by CaSS are used by applications to:")]),e._v(" "),t("ul",[t("li",[e._v("Define, store, manage, and access objects called competencies that are organized into structured collections called frameworks. Competencies can represent competencies, skills, knowledge, abilities, traits, learning objectives, learning outcomes, and other similar constructs that define performance, mastery, attainment, or capabilities. Frameworks are structured collections of competencies associated with a knowledge domain, a domain of endeavor, a job, or a task with structure defined by relations among the competencies they (or other frameworks) contain. CaSS provides persistent, unique URLs that multiple applications can use to access and reference the same frameworks and competencies.")]),e._v(" "),t("li",[e._v("Store assertions about the competencies held by an individual (or team), and compile assertions and other data into profiles that describe a learner’s current state. CaSS is designed to respond to queries from other applications that, for instance, ask whether an individual X holds a competency Y (at performance level Z). Subject to authorization and adherence to privacy protection policies, CaSS will answer yes or no and might include a number indicating its confidence in the answer, a link to evidence, and an expiry date. In addition, CaSS can collect assertions and other data from multiple sources and apply relations and rules to formulate a response to a query.")])]),e._v(" "),t("h3",{attrs:{id:"intended-scope"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#intended-scope"}},[e._v("#")]),e._v(" Intended Scope")]),e._v(" "),t("p",[e._v("CaSS is intended to allow competencies and competency frameworks to be defined, published, accessed, and applied in any size jurisdiction, ranging from a single learning system to an organization, a community of practice, or the entire world. The CaSS project believes that this capability is achievable and is needed to support competency-based approaches to training, education, credentialing, and career management. In fact, there already exist services such as the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(" that do this. Sharing assertions of competency among collaborating systems is another goal. Currently, this is done by using credentials as intermediaries, and the CaSS project believes that significant value can be achieved by enabling such sharing with closed ecosystems that consist of collaborating systems deployed by a training organization, educational institution, corporation, government agency, or a similar organization. Although the CaSS project has looked at broader use cases, the current version of CaSS therefore assumes that it is operating within such an ecosystem.")]),e._v(" "),t("h3",{attrs:{id:"services-not-end-user-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#services-not-end-user-applications"}},[e._v("#")]),e._v(" Services, not End-user Applications")]),e._v(" "),t("p",[e._v("Although the CaSS project is providing reference implementations of end-user applications that use the CaSS services, the CaSS services themselves are not end-user applications. They enable learning management systems, HR systems, talent management systems, student information systems, MOOCS, intelligent tutoring systems, learning resource repositories and registries, competency management systems, and other learning- and training-related applications to exchange data through software, but end-users do not interact directly with the services.")]),e._v(" "),t("h3",{attrs:{id:"infrastructure-and-interoperability-but-not-another-standard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#infrastructure-and-interoperability-but-not-another-standard"}},[e._v("#")]),e._v(" Infrastructure and Interoperability, but not Another Standard")]),e._v(" "),t("p",[e._v("CaSS is infrastructure that is intended to promote interoperability among software systems that produce and consume competencies and competency assertions. As expected, CaSS documentation specifies how these systems must receive and transmit data, and to the extent that systems must conform to these specifications to use CaSS. CaSS documentation also specifies the object models (expressed as Linked Data schema) that CaSS uses to internally store competencies, frameworks, and assertions, and to represent alignments between resources and competencies; None of these internal representations are intended to be standards. To the contrary, multiple standards exist and are in development for these purposes. The CaSS project supports these standards as import and export formats and does not to try to create yet another one.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(635),alt:"XKCD Comic"}})]),e._v(" "),t("h3",{attrs:{id:"collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#collaboration"}},[e._v("#")]),e._v(" Collaboration")]),e._v(" "),t("p",[e._v("The CaSS Project is a community effort that strives to incorporate, support, and add value to the work of the many individuals and organizations involved in competency-based education and training. These include the "),t("a",{attrs:{href:"https://www.credentialtransparencyinitiative.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Credential Engine"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.imsglobal.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IMS Global Learning Consortium"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://ieee-sa.imeetcentral.com/ltsc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IEEE Learning Technology Standards Committee"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.medbiq.org/std_specs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MedBiquitous"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.dublincore.org/specifications/lrmi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.cetis.org.uk/inloc/Home",target:"_blank",rel:"noopener noreferrer"}},[e._v("Centre for Educational Technology Interoperability and Standards"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(", and many others.")]),e._v(" "),t("h2",{attrs:{id:"design-principles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#design-principles"}},[e._v("#")]),e._v(" Design Principles")]),e._v(" "),t("h3",{attrs:{id:"federated-not-centralized-not-distributed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#federated-not-centralized-not-distributed"}},[e._v("#")]),e._v(" Federated, not centralized, not distributed")]),e._v(" "),t("p",[e._v("CaSS follows a "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Federated_architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("Federated Architecture"),t("OutboundLink")],1),e._v(". CaSS components communicate with each other via web services and common object models. A CaSS instance may be deployed by any party, may be exposed to the public, or may be set up behind a firewall on a private network. CaSS instances can be standalone or syndicated and can be distributed over multiple servers.")]),e._v(" "),t("h3",{attrs:{id:"open-source"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-source"}},[e._v("#")]),e._v(" Open Source")]),e._v(" "),t("p",[e._v("CaSS code is released on GitHub under a non-viral (“business-friendly”) Apache 2.0 license.")]),e._v(" "),t("h3",{attrs:{id:"open-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-data"}},[e._v("#")]),e._v(" Open Data")]),e._v(" "),t("p",[e._v("CaSS uses and promotes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Linked_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("linked data"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Open_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("open data"),t("OutboundLink")],1),e._v(" and has mechanisms in place to facilitate public machine-readable access to competency data. CaSS selectively includes encryption mechanisms to identify users anonymously, provide data integrity and nonrepudiation, and protect Personally Identifiable Information. This use of encryption to protect rights allows researchers to use CaSS data without the need to maintain relationships of trust with providers of sensitive data.")]),e._v(" "),t("h3",{attrs:{id:"open-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-schema"}},[e._v("#")]),e._v(" Open Schema")]),e._v(" "),t("p",[e._v("The CaSS Project publishes its schema for all to use. These schemas are versioned and the CaSS library provides upgrade paths to move information forward as community ideas evolve. The CaSS Project and its collaborators maintain these schema.")]),e._v(" "),t("h3",{attrs:{id:"open-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-security"}},[e._v("#")]),e._v(" Open Security")]),e._v(" "),t("p",[e._v("CaSS supports commonly accepted and robust encryption formats (RSA and AES) for user identification, encryption, sharing, integrity and nonrepudiation. CaSS follows a no-knowledge policy, meaning that CaSS implementers, by default, cannot observe or decode protected information put into their instances by users of that instance. This preserves the privacy of user information.")]),e._v(" "),t("p",[e._v("Since CaSS is intended to be used in a wide variety of environments and applications, CaSS instances can implement and enforce stringent security and privacy policies but can also be configured to be completely open with no consideration given to either security or privacy, and everything in between.")]),e._v(" "),t("h3",{attrs:{id:"identity-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#identity-management"}},[e._v("#")]),e._v(" Identity Management")]),e._v(" "),t("p",[e._v("The current version of CaSS assumes that its assertion services will be deployed within an ecosystem that includes some sort of identity and group management. CaSS includes an identity manager as a core component. Because of the security and privacy concerns surrounding a person’s identity, it is recommended that applications should create non-PII identities and should not be able to access or alter the credentials of a user. The CaSS identity manager may also be configured to defer authorization and authentication to a third party system outside the ecosystem, such as OAuth.")]),e._v(" "),t("h2",{attrs:{id:"cass-instances-and-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-instances-and-apis"}},[e._v("#")]),e._v(" CaSS Instances and APIs")]),e._v(" "),t("p",[t("strong",[e._v("CaSS")]),e._v(" stands for Competency and Skills System (or Service) and refers to the open source software available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(" (CaSS Software), its associated documentation (CaSS Documentation), and services that the software implements and that the documentation describe (CaSS Services). CaSS is maintained by an effort called the CaSS Project. The CaSS Project web site is "),t("a",{attrs:{href:"https://www.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("www.cassproject.org"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("A working installation of CaSS is called a CaSS Instance and is composed of a CaSS Repository and CaSS Applications. Since CaSS is open source and has a software development kit, it can be modified, rewritten, combined with or used by other applications. If the result provides all of the documented CaSS functionality, a working installation is still considered to be a CaSS Instance.")]),e._v(" "),t("p",[e._v("Other applications interact with CaSS through the CaSS SDK. CaSS Libraries are written in Javascript and may be included in any execution environment with Javascript interoperability, such as Node, Java, or the .NET environment.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(636),alt:"CaSS Overview"}})]),e._v(" "),t("h3",{attrs:{id:"crud-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crud-apis"}},[e._v("#")]),e._v(" CRUD APIs")]),e._v(" "),t("p",[e._v("Data in CaSS is stored as objects. Subject to authorization, CaSS Web Service APIs enable these objectives to be created, retrieved, updated, and deleted (“CRUD” operations), and these operation suffice to use CaSS services.")]),e._v(" "),t("h2",{attrs:{id:"cass-objects"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-objects"}},[e._v("#")]),e._v(" CaSS Objects")]),e._v(" "),t("p",[e._v("In CaSS, objects are represented using "),t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON-LD"),t("OutboundLink")],1),e._v(" compatible with "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("schema.org"),t("OutboundLink")],1),e._v(" and are extensions of "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("creative work schema"),t("OutboundLink")],1),e._v(". The properties of creative works, (in particular names, descriptions, and URLs) are inherited and apply to all CaSS objects.")]),e._v(" "),t("h3",{attrs:{id:"competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-framework"}},[e._v("#")]),e._v(" Competency Framework")]),e._v(" "),t("p",[e._v("Frameworks contain competencies and relations among competencies. Properties include a name, description, a source (e.g. from where the framework was imported or originally defined).")]),e._v(" "),t("h3",{attrs:{id:"competency"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency"}},[e._v("#")]),e._v(" Competency")]),e._v(" "),t("p",[e._v("Competencies can have a scope (conditions to which the competency applies), roll-up rules, and performance levels. The latter two are expressed as independent objects, as are relations among competencies and alignments between resources and competencies. This allows users who do not have access to and do not own competencies to define roll-up rules, levels, relations, and alignments.")]),e._v(" "),t("h3",{attrs:{id:"level"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level"}},[e._v("#")]),e._v(" Level")]),e._v(" "),t("p",[e._v("The level object assigns performance levels to an identified competency. Each level should have performance criteria (also called assessment or evaluation criteria). The “scale” is assumed to be discrete and qualitative (e.g. {1,2,3,4}, {beginner, intermediate, advanced}).")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Levels are a common property of competencies. However, there are two different types of “levels” that are often confused: Performance levels of the same skill or ability (or indications of knowledge) and levels of advancement in rank or the ability to perform a job. In the latter case, advanced levels of a competency usually requires additional and different skills than lower levels: A black belt karate master can do things that a white belt cannot, and advancement from a junior to intermediate to senior programmer involves performing new tasks, not just writing the same type of code better or more efficiently.")])]),e._v(" "),t("p",[e._v("When defining competencies and frameworks for human interpretation, these two types of levels can be conflated without causing too much harm, but treating levels of advancement as levels of performance leads to computational problems when trying to make inferences about sub-competencies. As a result, it is best practice to treat different levels of advancement as distinct competencies rather than to relate them with the Performance Level object. Future versions of CaSS will use the relation “is a level of” and “is a more advanced level of” to indicate the connection, which will also allow categorical competencies such as “karate” to be defined in addition to their levels.")]),e._v(" "),t("h3",{attrs:{id:"relation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[e._v("#")]),e._v(" Relation")]),e._v(" "),t("p",[e._v("Relations are statements that relate two competencies (in the same or different frameworks). The standard relationships in the current release of CaSS include “requires,” “is required by,” “narrows,” “broadens,” “is the same as,” and “is equivalent to.”")]),e._v(" "),t("p",[e._v("Relations that describe how competencies are related could be represented as properties on the competencies, however, several use cases include third parties creating new relationships between competencies. These third-party relationships can be crosswalks, alignments, or other mappings between frameworks. As the third party owns these relationships, they may compose a separate framework owned by the third party.")]),e._v(" "),t("h3",{attrs:{id:"alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alignment"}},[e._v("#")]),e._v(" Alignment")]),e._v(" "),t("p",[e._v("CaSS uses the "),t("a",{attrs:{href:"http://www.lrmi.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative (LRMI)"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://schema.org/AlignmentObject",target:"_blank",rel:"noopener noreferrer"}},[e._v("alignment object"),t("OutboundLink")],1),e._v(" to indicate alignments between resources and competencies. These are expressed using the "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("CreativeWork"),t("OutboundLink")],1),e._v(" schema.")]),e._v(" "),t("h3",{attrs:{id:"assertion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion"}},[e._v("#")]),e._v(" Assertion")]),e._v(" "),t("p",[e._v("An assertion object records that an agent has asserted that a subject (i.e. an individual) holds or does not hold a particular competency at a particular performance level. The assertion can include:")]),e._v(" "),t("ul",[t("li",[e._v("(links to) associated evidence on which the assertion is based (e.g. an exam, a certificate, or a document)")]),e._v(" "),t("li",[e._v("a timestamp (when it was made)")]),e._v(" "),t("li",[e._v("an expiration time past which it is no longer to be considered valid")]),e._v(" "),t("li",[e._v("a confidence "),t("em",[e._v("p")]),e._v(" with 0 ≤ "),t("em",[e._v("p")]),e._v(" ≤ 1")])]),e._v(" "),t("p",[e._v("Some applications may interpret confidence as the agent’s estimate of the probability that an assertion is correct, but other applications may take a more circumspect view and interpret it as nothing more than a general indicator of confidence in the assertion.")]),e._v(" "),t("h2",{attrs:{id:"cass-components"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-components"}},[e._v("#")]),e._v(" CaSS Components")]),e._v(" "),t("p",[e._v("Each CaSS instance contains the following components:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Repository")]),e._v(" - installed on one or more servers\n"),t("ul",[t("li",[e._v("Services for storing, retrieving, and updating CaSS objects (competencies, frameworks, alignments, roll-up rules, assertions, etc.)")]),e._v(" "),t("li",[e._v("Identity management services")]),e._v(" "),t("li",[e._v("Security framework")]),e._v(" "),t("li",[e._v("Adapters")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Libraries")]),e._v(" - JavaScript libraries that implement the majority of CaSS functionality. These are incorporated into Web applications or other applications that use CaSS.\n"),t("ul",[t("li",[e._v("Import/Export (Import and export competencies and frameworks)")]),e._v(" "),t("li",[e._v("Identity Manager (JavaScript methods for the CaSS Identity manager)")]),e._v(" "),t("li",[e._v("Object Instantiation (JavaScript versions of CaSS objects)")]),e._v(" "),t("li",[e._v("Repository library (JavaScript methods for repository APIs)")]),e._v(" "),t("li",[e._v("Admin tools (Used to configure permissions, adapters, settings, etc.)")]),e._v(" "),t("li",[e._v("Plugins (JavaScript CaSS adapters used to communicate with external applications)")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Applications")]),e._v(" - HTML5 web applications that provide software capabilities. Can be run as a standalone Web application or incorporated into other Web applications.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(637),alt:"CaSS Components"}})]),e._v(" "),t("h3",{attrs:{id:"cass-reference-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-reference-implementation"}},[e._v("#")]),e._v(" CaSS Reference Implementation")]),e._v(" "),t("p",[e._v("The CaSS Reference Implementation refers to an instance of CaSS maintained by the CaSS project to demonstrate CaSS services in action and to provide sample code to developers. The CaSS Reference Implementation includes end-user applications that are meant to demonstrate CaSS but are not meant to be production applications. The code for the CaSS Reference Implementation is available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"cass-adapters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-adapters"}},[e._v("#")]),e._v(" CaSS Adapters")]),e._v(" "),t("p",[e._v("A CaSS Adapter is software that translates information and requests from an external system into the format required by CaSS APIs and vice versa. CaSS Adapters can be built into external systems or be implemented as middleware that sits between an external system and a CaSS instance. CaSS Adapters are used by a CaSS instance to retrieve assertions about an individual’s competencies from external systems. CaSS Adapters may also be used by external systems to query CaSS about individual competencies and to receive answers to such queries in their preferred format.")]),e._v(" "),t("p",[t("RouterLink",{attrs:{to:"/guide/interoperability/#adapters-overview"}},[e._v("Several CaSS adapters")]),e._v(" come with the CaSS code distribution, including an xAPI adapter for retrieving "),t("a",{attrs:{href:"https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("xAPI statements"),t("OutboundLink")],1),e._v(" from a Learning Record Store (LRS). Other adapters relevant to the "),t("a",{attrs:{href:"https://adlnet.gov/projects/tla/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADL’s Total Learning Architecture (TLA)"),t("OutboundLink")],1),e._v(" are incorporated.")],1),e._v(" "),t("h3",{attrs:{id:"assertion-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processors"}},[e._v("#")]),e._v(" Assertion Processors")]),e._v(" "),t("p",[e._v("An Assertion Processor is a component of CaSS that, when asked whether an individual "),t("em",[e._v("X")]),e._v(" has competency "),t("em",[e._v("C")]),e._v(" (at performance level "),t("em",[e._v("L")]),e._v("), retrieves relevant assertions, collates them (using roll-up rules and the structure of the framework containing "),t("em",[e._v("C")]),e._v(", and returns a conclusion (assuming it is authorized to do so.) An assertion includes the identity of the individual (or "),t("strong",[e._v("subject")]),e._v(") and the competency. It can also include the identity of the agent making the assertion, a performance level, a link to evidence, a "),t("strong",[e._v("confidence")]),e._v(" (a number between 0 and 1), a timestamp, and an expiration time.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(638),alt:"CaSS Assertion Format"}})]),e._v(" "),t("p",[e._v("Assertion processors maintain a configurable list of systems that can provide them with assertions. This list could consist of only one CaSS instance, in which case that instance acts as a store for competency-based learner profiles, but it can also include other systems that might make or transmit assertions. When an assertion processor receives a query, it looks at what other competencies might be related to the queried competency through roll-up rules and framework relationships, and the processor retrieves information about these as well as about the target competency. The processor then follows an algorithm that computes a single conclusion about the target competency (and target performance level, if relevant) taking into consideration roll-up rules, relationships, confidence, and (in some cases) the reliability of collaborating systems.")]),e._v(" "),t("p",[e._v("The current CaSS distribution includes a JavaScript Assertion Processor. This enables assertion processing to be done within client applications. Server-side versions may be implemented as part of an adapter or Node application. Future plans include a server-side version that will act as an adapter for the TLA’s profile API.")]),e._v(" "),t("h2",{attrs:{id:"security-and-privacy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-and-privacy"}},[e._v("#")]),e._v(" Security and Privacy")]),e._v(" "),t("p",[e._v("Security and privacy are strongly enforced in CaSS. The CaSS project has developed a "),t("a",{attrs:{href:"/dev/security/kbac-specification"}},[e._v("security framework")]),e._v(" that uses “Key-based Access Control” (KBAC) based on cryptographic methods found in Public Key Infrastructure (PKI). This approach was guided by the following requirements:")]),e._v(" "),t("ul",[t("li",[e._v("Prevent sensitive information (which in CaSS includes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Personal_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("personally identifiable information (PII)"),t("OutboundLink")],1),e._v(") and competency assertions) from being discovered or read by any unauthorized individual.")]),e._v(" "),t("li",[e._v("Enable access to information to be controlled by its “owner.” The owner of an assertion about an individual’s competencies may be the individual, but it may also be the individual’s employer or another type of entity. Note that controlling access is not the same as controlling the contents of an assertion, which an owner cannot typically change.")]),e._v(" "),t("li",[e._v("Enable recipients of sensitive information to verify that it is valid and that no unauthorized tampering or alteration has occurred.")]),e._v(" "),t("li",[e._v("Enable a wide variety of privacy policies to be implemented, ranging from open policies with no privacy or data protection to highly secure policies that, for example, prevent CaSS from reporting whether or not any assertion exists about an individual unless the requesting system is on a trusted list and securely authenticates itself.")]),e._v(" "),t("li",[e._v("Protect privacy while supporting the use of anonymized “open data” for the purpose of analyzing and improving learning and training systems and for other research purposes.")])]),e._v(" "),t("h3",{attrs:{id:"cass-security-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-security-framework"}},[e._v("#")]),e._v(" CaSS Security Framework")]),e._v(" "),t("p",[e._v("The CaSS security framework assigns an identity to each person, organization, software system, or group. Identities are stored in the CaSS identity manager as 2048 bit "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/RSA_(cryptosystem)",target:"_blank",rel:"noopener noreferrer"}},[e._v("public RSA keys"),t("OutboundLink")],1),e._v(". In CaSS implementations, these are mapped externally to meaningful identifiers, but within CaSS, and when included in a CaSS object such as an assertion about someone’s competency, they are just 2048 bit pseudo-identifiers that contain no PII and require additional mappings to refer to individuals.")]),e._v(" "),t("p",[e._v("CaSS objects are JSON-LD objects that can be stored open to the public (unencrypted) or privately (encrypted) in the CaSS repository. Objects can be transmitted to other systems as plain text if desired, but by default objects in transit are encrypted and contain additional signatures that can be used to verify that they have not been altered and that specify which identities have the following permissions:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Read")]),e._v(": Decrypt and read the object")]),e._v(" "),t("li",[t("strong",[e._v("Edit")]),e._v(": Read, change, and re-publish the object or specified properties of the object")]),e._v(" "),t("li",[t("strong",[e._v("Delete")]),e._v(": Delete an object (only applies to the CaSS Repository)")]),e._v(" "),t("li",[t("strong",[e._v("Control")]),e._v(": Grant and revoke permissions")])]),e._v(" "),t("p",[e._v("CaSS uses public/private key encryption and signature methods to ensure that only those identities assigned the above permissions can perform the corresponding tasks. For example, if someone with the right to read an object but not the right to edit it nonetheless opens it, edits it, and re-saves it, then the unpermitted tampering will be immediately detected by any CaSS instance or any system using secure versions of the CaSS APIs and can be detected using standard means by any third party.")]),e._v(" "),t("p",[e._v("In CaSS, identities, and hence the above permissions, can be assigned to groups as well as individuals. CaSS assumes that group membership can be verified externally to CaSS. Identities can also be assigned to systems, such as an LMS or an HR system.")]),e._v(" "),t("h3",{attrs:{id:"roles-in-cass-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roles-in-cass-applications"}},[e._v("#")]),e._v(" Roles in CaSS Applications")]),e._v(" "),t("p",[e._v("CaSS itself only supports permissions, and only does this on an object-by-object basis. Roles and associated policies are defined in applications that use CaSS services. It is up to these applications to assign appropriate permissions to CaSS objects. Once assigned, however, any CaSS instance will enforce these permissions and unauthorized actions will be either prevented (read actions) or revealed (other actions).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(639),alt:"CaSS Roles"}})]),e._v(" "),t("h3",{attrs:{id:"analysis-of-kbac-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#analysis-of-kbac-security"}},[e._v("#")]),e._v(" Analysis of KBAC Security")]),e._v(" "),t("p",[e._v("The effectiveness of KBAC Security is analyzed in a "),t("a",{attrs:{href:"/dev/security/kbac-threat-model"}},[e._v("Threat Model")]),e._v(" document. The document shows how KBAC prevents common threats and the impact should systems become compromised.")]),e._v(" "),t("p",[e._v("Implementers, users, and administrator should note that KBAC will not prevent attacks based on compromising end user applications, e.g. attacks that steal information from an end-user’s browser after it has been decrypted and displayed, attacks that compromise a server that provides an end-user application, or attacks that steal a user’s password from a web browser. These attacks are also analyzed in the Threat Model under the “Client-side Attacks” tab.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{635:function(e,t,a){e.exports=a.p+"assets/img/cass-overview-comic.5b9fa605.png"},636:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_environment.a93d588a.png"},637:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_components.aa1759ed.png"},638:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_assertion_format.0217138d.png"},639:function(e,t,a){e.exports=a.p+"assets/img/cass_overview_roles.d78926db.png"},721:function(e,t,a){"use strict";a.r(t);var n=a(69),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("Last updated 2018-12-12")]),e._v(" "),t("h2",{attrs:{id:"welcome"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#welcome"}},[e._v("#")]),e._v(" Welcome")]),e._v(" "),t("p",[e._v("We sincerely hope your development experience with CASS will be easy and enlightening. Perhaps some of the lessons learned and tools created during its development will benefit you on other projects. -- CASS Team")]),e._v(" "),t("h2",{attrs:{id:"about-cass"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about-cass"}},[e._v("#")]),e._v(" About CaSS")]),e._v(" "),t("p",[e._v("CaSS is open-source software that enables users and other systems to define, store, manage, and access data objects called competencies that are organized into structured collections called frameworks, and to report, store, and retrieve assertions about the competencies held by an individual.")]),e._v(" "),t("p",[e._v("CaSS consists of open source code that provides two basic sets of services intended for use by applications that support competency-based approaches to education, training, and workforce development. The goal of CaSS is to enable these applications to share competencies and related information about learners and learning resources in an interoperable and secure manner. The basic services provided by CaSS are used by applications to:")]),e._v(" "),t("ul",[t("li",[e._v("Define, store, manage, and access objects called competencies that are organized into structured collections called frameworks. Competencies can represent competencies, skills, knowledge, abilities, traits, learning objectives, learning outcomes, and other similar constructs that define performance, mastery, attainment, or capabilities. Frameworks are structured collections of competencies associated with a knowledge domain, a domain of endeavor, a job, or a task with structure defined by relations among the competencies they (or other frameworks) contain. CaSS provides persistent, unique URLs that multiple applications can use to access and reference the same frameworks and competencies.")]),e._v(" "),t("li",[e._v("Store assertions about the competencies held by an individual (or team), and compile assertions and other data into profiles that describe a learner’s current state. CaSS is designed to respond to queries from other applications that, for instance, ask whether an individual X holds a competency Y (at performance level Z). Subject to authorization and adherence to privacy protection policies, CaSS will answer yes or no and might include a number indicating its confidence in the answer, a link to evidence, and an expiry date. In addition, CaSS can collect assertions and other data from multiple sources and apply relations and rules to formulate a response to a query.")])]),e._v(" "),t("h3",{attrs:{id:"intended-scope"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#intended-scope"}},[e._v("#")]),e._v(" Intended Scope")]),e._v(" "),t("p",[e._v("CaSS is intended to allow competencies and competency frameworks to be defined, published, accessed, and applied in any size jurisdiction, ranging from a single learning system to an organization, a community of practice, or the entire world. The CaSS project believes that this capability is achievable and is needed to support competency-based approaches to training, education, credentialing, and career management. In fact, there already exist services such as the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(" that do this. Sharing assertions of competency among collaborating systems is another goal. Currently, this is done by using credentials as intermediaries, and the CaSS project believes that significant value can be achieved by enabling such sharing with closed ecosystems that consist of collaborating systems deployed by a training organization, educational institution, corporation, government agency, or a similar organization. Although the CaSS project has looked at broader use cases, the current version of CaSS therefore assumes that it is operating within such an ecosystem.")]),e._v(" "),t("h3",{attrs:{id:"services-not-end-user-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#services-not-end-user-applications"}},[e._v("#")]),e._v(" Services, not End-user Applications")]),e._v(" "),t("p",[e._v("Although the CaSS project is providing reference implementations of end-user applications that use the CaSS services, the CaSS services themselves are not end-user applications. They enable learning management systems, HR systems, talent management systems, student information systems, MOOCS, intelligent tutoring systems, learning resource repositories and registries, competency management systems, and other learning- and training-related applications to exchange data through software, but end-users do not interact directly with the services.")]),e._v(" "),t("h3",{attrs:{id:"infrastructure-and-interoperability-but-not-another-standard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#infrastructure-and-interoperability-but-not-another-standard"}},[e._v("#")]),e._v(" Infrastructure and Interoperability, but not Another Standard")]),e._v(" "),t("p",[e._v("CaSS is infrastructure that is intended to promote interoperability among software systems that produce and consume competencies and competency assertions. As expected, CaSS documentation specifies how these systems must receive and transmit data, and to the extent that systems must conform to these specifications to use CaSS. CaSS documentation also specifies the object models (expressed as Linked Data schema) that CaSS uses to internally store competencies, frameworks, and assertions, and to represent alignments between resources and competencies; None of these internal representations are intended to be standards. To the contrary, multiple standards exist and are in development for these purposes. The CaSS project supports these standards as import and export formats and does not to try to create yet another one.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(635),alt:"XKCD Comic"}})]),e._v(" "),t("h3",{attrs:{id:"collaboration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#collaboration"}},[e._v("#")]),e._v(" Collaboration")]),e._v(" "),t("p",[e._v("The CaSS Project is a community effort that strives to incorporate, support, and add value to the work of the many individuals and organizations involved in competency-based education and training. These include the "),t("a",{attrs:{href:"https://www.credentialtransparencyinitiative.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Credential Engine"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.imsglobal.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IMS Global Learning Consortium"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://ieee-sa.imeetcentral.com/ltsc/",target:"_blank",rel:"noopener noreferrer"}},[e._v("IEEE Learning Technology Standards Committee"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.medbiq.org/std_specs/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MedBiquitous"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"https://www.dublincore.org/specifications/lrmi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.cetis.org.uk/inloc/Home",target:"_blank",rel:"noopener noreferrer"}},[e._v("Centre for Educational Technology Interoperability and Standards"),t("OutboundLink")],1),e._v(", the "),t("a",{attrs:{href:"http://www.achievementstandards.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Achievement Standards Network"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://www.onetonline.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("O*Net"),t("OutboundLink")],1),e._v(", and many others.")]),e._v(" "),t("h2",{attrs:{id:"design-principles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#design-principles"}},[e._v("#")]),e._v(" Design Principles")]),e._v(" "),t("h3",{attrs:{id:"federated-not-centralized-not-distributed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#federated-not-centralized-not-distributed"}},[e._v("#")]),e._v(" Federated, not centralized, not distributed")]),e._v(" "),t("p",[e._v("CaSS follows a "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Federated_architecture",target:"_blank",rel:"noopener noreferrer"}},[e._v("Federated Architecture"),t("OutboundLink")],1),e._v(". CaSS components communicate with each other via web services and common object models. A CaSS instance may be deployed by any party, may be exposed to the public, or may be set up behind a firewall on a private network. CaSS instances can be standalone or syndicated and can be distributed over multiple servers.")]),e._v(" "),t("h3",{attrs:{id:"open-source"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-source"}},[e._v("#")]),e._v(" Open Source")]),e._v(" "),t("p",[e._v("CaSS code is released on GitHub under a non-viral (“business-friendly”) Apache 2.0 license.")]),e._v(" "),t("h3",{attrs:{id:"open-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-data"}},[e._v("#")]),e._v(" Open Data")]),e._v(" "),t("p",[e._v("CaSS uses and promotes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Linked_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("linked data"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Open_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("open data"),t("OutboundLink")],1),e._v(" and has mechanisms in place to facilitate public machine-readable access to competency data. CaSS selectively includes encryption mechanisms to identify users anonymously, provide data integrity and nonrepudiation, and protect Personally Identifiable Information. This use of encryption to protect rights allows researchers to use CaSS data without the need to maintain relationships of trust with providers of sensitive data.")]),e._v(" "),t("h3",{attrs:{id:"open-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-schema"}},[e._v("#")]),e._v(" Open Schema")]),e._v(" "),t("p",[e._v("The CaSS Project publishes its schema for all to use. These schemas are versioned and the CaSS library provides upgrade paths to move information forward as community ideas evolve. The CaSS Project and its collaborators maintain these schema.")]),e._v(" "),t("h3",{attrs:{id:"open-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-security"}},[e._v("#")]),e._v(" Open Security")]),e._v(" "),t("p",[e._v("CaSS supports commonly accepted and robust encryption formats (RSA and AES) for user identification, encryption, sharing, integrity and nonrepudiation. CaSS follows a no-knowledge policy, meaning that CaSS implementers, by default, cannot observe or decode protected information put into their instances by users of that instance. This preserves the privacy of user information.")]),e._v(" "),t("p",[e._v("Since CaSS is intended to be used in a wide variety of environments and applications, CaSS instances can implement and enforce stringent security and privacy policies but can also be configured to be completely open with no consideration given to either security or privacy, and everything in between.")]),e._v(" "),t("h3",{attrs:{id:"identity-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#identity-management"}},[e._v("#")]),e._v(" Identity Management")]),e._v(" "),t("p",[e._v("The current version of CaSS assumes that its assertion services will be deployed within an ecosystem that includes some sort of identity and group management. CaSS includes an identity manager as a core component. Because of the security and privacy concerns surrounding a person’s identity, it is recommended that applications should create non-PII identities and should not be able to access or alter the credentials of a user. The CaSS identity manager may also be configured to defer authorization and authentication to a third party system outside the ecosystem, such as OAuth.")]),e._v(" "),t("h2",{attrs:{id:"cass-instances-and-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-instances-and-apis"}},[e._v("#")]),e._v(" CaSS Instances and APIs")]),e._v(" "),t("p",[t("strong",[e._v("CaSS")]),e._v(" stands for Competency and Skills System (or Service) and refers to the open source software available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(" (CaSS Software), its associated documentation (CaSS Documentation), and services that the software implements and that the documentation describe (CaSS Services). CaSS is maintained by an effort called the CaSS Project. The CaSS Project web site is "),t("a",{attrs:{href:"https://www.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("www.cassproject.org"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("A working installation of CaSS is called a CaSS Instance and is composed of a CaSS Repository and CaSS Applications. Since CaSS is open source and has a software development kit, it can be modified, rewritten, combined with or used by other applications. If the result provides all of the documented CaSS functionality, a working installation is still considered to be a CaSS Instance.")]),e._v(" "),t("p",[e._v("Other applications interact with CaSS through the CaSS SDK. CaSS Libraries are written in Javascript and may be included in any execution environment with Javascript interoperability, such as Node, Java, or the .NET environment.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(636),alt:"CaSS Overview"}})]),e._v(" "),t("h3",{attrs:{id:"crud-apis"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#crud-apis"}},[e._v("#")]),e._v(" CRUD APIs")]),e._v(" "),t("p",[e._v("Data in CaSS is stored as objects. Subject to authorization, CaSS Web Service APIs enable these objectives to be created, retrieved, updated, and deleted (“CRUD” operations), and these operation suffice to use CaSS services.")]),e._v(" "),t("h2",{attrs:{id:"cass-objects"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-objects"}},[e._v("#")]),e._v(" CaSS Objects")]),e._v(" "),t("p",[e._v("In CaSS, objects are represented using "),t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("JSON-LD"),t("OutboundLink")],1),e._v(" compatible with "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("schema.org"),t("OutboundLink")],1),e._v(" and are extensions of "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("creative work schema"),t("OutboundLink")],1),e._v(". The properties of creative works, (in particular names, descriptions, and URLs) are inherited and apply to all CaSS objects.")]),e._v(" "),t("h3",{attrs:{id:"competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-framework"}},[e._v("#")]),e._v(" Competency Framework")]),e._v(" "),t("p",[e._v("Frameworks contain competencies and relations among competencies. Properties include a name, description, a source (e.g. from where the framework was imported or originally defined).")]),e._v(" "),t("h3",{attrs:{id:"competency"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency"}},[e._v("#")]),e._v(" Competency")]),e._v(" "),t("p",[e._v("Competencies can have a scope (conditions to which the competency applies), roll-up rules, and performance levels. The latter two are expressed as independent objects, as are relations among competencies and alignments between resources and competencies. This allows users who do not have access to and do not own competencies to define roll-up rules, levels, relations, and alignments.")]),e._v(" "),t("h3",{attrs:{id:"level"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#level"}},[e._v("#")]),e._v(" Level")]),e._v(" "),t("p",[e._v("The level object assigns performance levels to an identified competency. Each level should have performance criteria (also called assessment or evaluation criteria). The “scale” is assumed to be discrete and qualitative (e.g. {1,2,3,4}, {beginner, intermediate, advanced}).")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("Levels are a common property of competencies. However, there are two different types of “levels” that are often confused: Performance levels of the same skill or ability (or indications of knowledge) and levels of advancement in rank or the ability to perform a job. In the latter case, advanced levels of a competency usually requires additional and different skills than lower levels: A black belt karate master can do things that a white belt cannot, and advancement from a junior to intermediate to senior programmer involves performing new tasks, not just writing the same type of code better or more efficiently.")])]),e._v(" "),t("p",[e._v("When defining competencies and frameworks for human interpretation, these two types of levels can be conflated without causing too much harm, but treating levels of advancement as levels of performance leads to computational problems when trying to make inferences about sub-competencies. As a result, it is best practice to treat different levels of advancement as distinct competencies rather than to relate them with the Performance Level object. Future versions of CaSS will use the relation “is a level of” and “is a more advanced level of” to indicate the connection, which will also allow categorical competencies such as “karate” to be defined in addition to their levels.")]),e._v(" "),t("h3",{attrs:{id:"relation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#relation"}},[e._v("#")]),e._v(" Relation")]),e._v(" "),t("p",[e._v("Relations are statements that relate two competencies (in the same or different frameworks). The standard relationships in the current release of CaSS include “requires,” “is required by,” “narrows,” “broadens,” “is the same as,” and “is equivalent to.”")]),e._v(" "),t("p",[e._v("Relations that describe how competencies are related could be represented as properties on the competencies, however, several use cases include third parties creating new relationships between competencies. These third-party relationships can be crosswalks, alignments, or other mappings between frameworks. As the third party owns these relationships, they may compose a separate framework owned by the third party.")]),e._v(" "),t("h3",{attrs:{id:"alignment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#alignment"}},[e._v("#")]),e._v(" Alignment")]),e._v(" "),t("p",[e._v("CaSS uses the "),t("a",{attrs:{href:"http://www.lrmi.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Learning Resource Metadata Initiative (LRMI)"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://schema.org/AlignmentObject",target:"_blank",rel:"noopener noreferrer"}},[e._v("alignment object"),t("OutboundLink")],1),e._v(" to indicate alignments between resources and competencies. These are expressed using the "),t("a",{attrs:{href:"https://schema.org/CreativeWork",target:"_blank",rel:"noopener noreferrer"}},[e._v("CreativeWork"),t("OutboundLink")],1),e._v(" schema.")]),e._v(" "),t("h3",{attrs:{id:"assertion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion"}},[e._v("#")]),e._v(" Assertion")]),e._v(" "),t("p",[e._v("An assertion object records that an agent has asserted that a subject (i.e. an individual) holds or does not hold a particular competency at a particular performance level. The assertion can include:")]),e._v(" "),t("ul",[t("li",[e._v("(links to) associated evidence on which the assertion is based (e.g. an exam, a certificate, or a document)")]),e._v(" "),t("li",[e._v("a timestamp (when it was made)")]),e._v(" "),t("li",[e._v("an expiration time past which it is no longer to be considered valid")]),e._v(" "),t("li",[e._v("a confidence "),t("em",[e._v("p")]),e._v(" with 0 ≤ "),t("em",[e._v("p")]),e._v(" ≤ 1")])]),e._v(" "),t("p",[e._v("Some applications may interpret confidence as the agent’s estimate of the probability that an assertion is correct, but other applications may take a more circumspect view and interpret it as nothing more than a general indicator of confidence in the assertion.")]),e._v(" "),t("h2",{attrs:{id:"cass-components"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-components"}},[e._v("#")]),e._v(" CaSS Components")]),e._v(" "),t("p",[e._v("Each CaSS instance contains the following components:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("CaSS Repository")]),e._v(" - installed on one or more servers\n"),t("ul",[t("li",[e._v("Services for storing, retrieving, and updating CaSS objects (competencies, frameworks, alignments, roll-up rules, assertions, etc.)")]),e._v(" "),t("li",[e._v("Identity management services")]),e._v(" "),t("li",[e._v("Security framework")]),e._v(" "),t("li",[e._v("Adapters")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Libraries")]),e._v(" - JavaScript libraries that implement the majority of CaSS functionality. These are incorporated into Web applications or other applications that use CaSS.\n"),t("ul",[t("li",[e._v("Import/Export (Import and export competencies and frameworks)")]),e._v(" "),t("li",[e._v("Identity Manager (JavaScript methods for the CaSS Identity manager)")]),e._v(" "),t("li",[e._v("Object Instantiation (JavaScript versions of CaSS objects)")]),e._v(" "),t("li",[e._v("Repository library (JavaScript methods for repository APIs)")]),e._v(" "),t("li",[e._v("Admin tools (Used to configure permissions, adapters, settings, etc.)")]),e._v(" "),t("li",[e._v("Plugins (JavaScript CaSS adapters used to communicate with external applications)")])])]),e._v(" "),t("li",[t("strong",[e._v("CaSS Applications")]),e._v(" - HTML5 web applications that provide software capabilities. Can be run as a standalone Web application or incorporated into other Web applications.")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(637),alt:"CaSS Components"}})]),e._v(" "),t("h3",{attrs:{id:"cass-reference-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-reference-implementation"}},[e._v("#")]),e._v(" CaSS Reference Implementation")]),e._v(" "),t("p",[e._v("The CaSS Reference Implementation refers to an instance of CaSS maintained by the CaSS project to demonstrate CaSS services in action and to provide sample code to developers. The CaSS Reference Implementation includes end-user applications that are meant to demonstrate CaSS but are not meant to be production applications. The code for the CaSS Reference Implementation is available from "),t("a",{attrs:{href:"https://github.com/cassproject/CaSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"cass-adapters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-adapters"}},[e._v("#")]),e._v(" CaSS Adapters")]),e._v(" "),t("p",[e._v("A CaSS Adapter is software that translates information and requests from an external system into the format required by CaSS APIs and vice versa. CaSS Adapters can be built into external systems or be implemented as middleware that sits between an external system and a CaSS instance. CaSS Adapters are used by a CaSS instance to retrieve assertions about an individual’s competencies from external systems. CaSS Adapters may also be used by external systems to query CaSS about individual competencies and to receive answers to such queries in their preferred format.")]),e._v(" "),t("p",[t("RouterLink",{attrs:{to:"/guide/interoperability/#adapters-overview"}},[e._v("Several CaSS adapters")]),e._v(" come with the CaSS code distribution, including an xAPI adapter for retrieving "),t("a",{attrs:{href:"https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("xAPI statements"),t("OutboundLink")],1),e._v(" from a Learning Record Store (LRS). Other adapters relevant to the "),t("a",{attrs:{href:"https://adlnet.gov/projects/tla/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ADL’s Total Learning Architecture (TLA)"),t("OutboundLink")],1),e._v(" are incorporated.")],1),e._v(" "),t("h3",{attrs:{id:"assertion-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processors"}},[e._v("#")]),e._v(" Assertion Processors")]),e._v(" "),t("p",[e._v("An Assertion Processor is a component of CaSS that, when asked whether an individual "),t("em",[e._v("X")]),e._v(" has competency "),t("em",[e._v("C")]),e._v(" (at performance level "),t("em",[e._v("L")]),e._v("), retrieves relevant assertions, collates them (using roll-up rules and the structure of the framework containing "),t("em",[e._v("C")]),e._v(", and returns a conclusion (assuming it is authorized to do so.) An assertion includes the identity of the individual (or "),t("strong",[e._v("subject")]),e._v(") and the competency. It can also include the identity of the agent making the assertion, a performance level, a link to evidence, a "),t("strong",[e._v("confidence")]),e._v(" (a number between 0 and 1), a timestamp, and an expiration time.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(638),alt:"CaSS Assertion Format"}})]),e._v(" "),t("p",[e._v("Assertion processors maintain a configurable list of systems that can provide them with assertions. This list could consist of only one CaSS instance, in which case that instance acts as a store for competency-based learner profiles, but it can also include other systems that might make or transmit assertions. When an assertion processor receives a query, it looks at what other competencies might be related to the queried competency through roll-up rules and framework relationships, and the processor retrieves information about these as well as about the target competency. The processor then follows an algorithm that computes a single conclusion about the target competency (and target performance level, if relevant) taking into consideration roll-up rules, relationships, confidence, and (in some cases) the reliability of collaborating systems.")]),e._v(" "),t("p",[e._v("The current CaSS distribution includes a JavaScript Assertion Processor. This enables assertion processing to be done within client applications. Server-side versions may be implemented as part of an adapter or Node application. Future plans include a server-side version that will act as an adapter for the TLA’s profile API.")]),e._v(" "),t("h2",{attrs:{id:"security-and-privacy"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-and-privacy"}},[e._v("#")]),e._v(" Security and Privacy")]),e._v(" "),t("p",[e._v("Security and privacy are strongly enforced in CaSS. The CaSS project has developed a "),t("a",{attrs:{href:"/dev/security/kbac-specification"}},[e._v("security framework")]),e._v(" that uses “Key-based Access Control” (KBAC) based on cryptographic methods found in Public Key Infrastructure (PKI). This approach was guided by the following requirements:")]),e._v(" "),t("ul",[t("li",[e._v("Prevent sensitive information (which in CaSS includes "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/Personal_data",target:"_blank",rel:"noopener noreferrer"}},[e._v("personally identifiable information (PII)"),t("OutboundLink")],1),e._v(") and competency assertions) from being discovered or read by any unauthorized individual.")]),e._v(" "),t("li",[e._v("Enable access to information to be controlled by its “owner.” The owner of an assertion about an individual’s competencies may be the individual, but it may also be the individual’s employer or another type of entity. Note that controlling access is not the same as controlling the contents of an assertion, which an owner cannot typically change.")]),e._v(" "),t("li",[e._v("Enable recipients of sensitive information to verify that it is valid and that no unauthorized tampering or alteration has occurred.")]),e._v(" "),t("li",[e._v("Enable a wide variety of privacy policies to be implemented, ranging from open policies with no privacy or data protection to highly secure policies that, for example, prevent CaSS from reporting whether or not any assertion exists about an individual unless the requesting system is on a trusted list and securely authenticates itself.")]),e._v(" "),t("li",[e._v("Protect privacy while supporting the use of anonymized “open data” for the purpose of analyzing and improving learning and training systems and for other research purposes.")])]),e._v(" "),t("h3",{attrs:{id:"cass-security-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-security-framework"}},[e._v("#")]),e._v(" CaSS Security Framework")]),e._v(" "),t("p",[e._v("The CaSS security framework assigns an identity to each person, organization, software system, or group. Identities are stored in the CaSS identity manager as 2048 bit "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/RSA_(cryptosystem)",target:"_blank",rel:"noopener noreferrer"}},[e._v("public RSA keys"),t("OutboundLink")],1),e._v(". In CaSS implementations, these are mapped externally to meaningful identifiers, but within CaSS, and when included in a CaSS object such as an assertion about someone’s competency, they are just 2048 bit pseudo-identifiers that contain no PII and require additional mappings to refer to individuals.")]),e._v(" "),t("p",[e._v("CaSS objects are JSON-LD objects that can be stored open to the public (unencrypted) or privately (encrypted) in the CaSS repository. Objects can be transmitted to other systems as plain text if desired, but by default objects in transit are encrypted and contain additional signatures that can be used to verify that they have not been altered and that specify which identities have the following permissions:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Read")]),e._v(": Decrypt and read the object")]),e._v(" "),t("li",[t("strong",[e._v("Edit")]),e._v(": Read, change, and re-publish the object or specified properties of the object")]),e._v(" "),t("li",[t("strong",[e._v("Delete")]),e._v(": Delete an object (only applies to the CaSS Repository)")]),e._v(" "),t("li",[t("strong",[e._v("Control")]),e._v(": Grant and revoke permissions")])]),e._v(" "),t("p",[e._v("CaSS uses public/private key encryption and signature methods to ensure that only those identities assigned the above permissions can perform the corresponding tasks. For example, if someone with the right to read an object but not the right to edit it nonetheless opens it, edits it, and re-saves it, then the unpermitted tampering will be immediately detected by any CaSS instance or any system using secure versions of the CaSS APIs and can be detected using standard means by any third party.")]),e._v(" "),t("p",[e._v("In CaSS, identities, and hence the above permissions, can be assigned to groups as well as individuals. CaSS assumes that group membership can be verified externally to CaSS. Identities can also be assigned to systems, such as an LMS or an HR system.")]),e._v(" "),t("h3",{attrs:{id:"roles-in-cass-applications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roles-in-cass-applications"}},[e._v("#")]),e._v(" Roles in CaSS Applications")]),e._v(" "),t("p",[e._v("CaSS itself only supports permissions, and only does this on an object-by-object basis. Roles and associated policies are defined in applications that use CaSS services. It is up to these applications to assign appropriate permissions to CaSS objects. Once assigned, however, any CaSS instance will enforce these permissions and unauthorized actions will be either prevented (read actions) or revealed (other actions).")]),e._v(" "),t("p",[t("img",{attrs:{src:a(639),alt:"CaSS Roles"}})]),e._v(" "),t("h3",{attrs:{id:"analysis-of-kbac-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#analysis-of-kbac-security"}},[e._v("#")]),e._v(" Analysis of KBAC Security")]),e._v(" "),t("p",[e._v("The effectiveness of KBAC Security is analyzed in a "),t("a",{attrs:{href:"/dev/security/kbac-threat-model"}},[e._v("Threat Model")]),e._v(" document. The document shows how KBAC prevents common threats and the impact should systems become compromised.")]),e._v(" "),t("p",[e._v("Implementers, users, and administrator should note that KBAC will not prevent attacks based on compromising end user applications, e.g. attacks that steal information from an end-user’s browser after it has been decrypted and displayed, attacks that compromise a server that provides an end-user application, or attacks that steal a user’s password from a web browser. These attacks are also analyzed in the Threat Model under the “Client-side Attacks” tab.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/32.4a48bc75.js.gz b/docs/assets/js/32.4a48bc75.js.gz new file mode 100644 index 000000000..410bd125f Binary files /dev/null and b/docs/assets/js/32.4a48bc75.js.gz differ diff --git a/docs/assets/js/32.b414de84.js.gz b/docs/assets/js/32.b414de84.js.gz deleted file mode 100644 index 2bcc5fc2c..000000000 Binary files a/docs/assets/js/32.b414de84.js.gz and /dev/null differ diff --git a/docs/assets/js/35.82df053e.js b/docs/assets/js/35.4b4e4c19.js similarity index 93% rename from docs/assets/js/35.82df053e.js rename to docs/assets/js/35.4b4e4c19.js index 675b547d0..28902ac95 100644 --- a/docs/assets/js/35.82df053e.js +++ b/docs/assets/js/35.4b4e4c19.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{435:function(e,r,t){e.exports=t.p+"assets/img/directory-information-users.fda33476.png"},573:function(e,r,t){e.exports=t.p+"assets/img/directory-copy-link.84a16b04.png"},574:function(e,r,t){e.exports=t.p+"assets/img/directory-shareable-link.cc80078d.png"},662:function(e,r,t){"use strict";t.r(r);var i=t(69),o=Object(i.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"managing-users-and-sharing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing"}},[e._v("#")]),e._v(" Managing Users and Sharing")]),e._v(" "),r("p",[e._v("Directories, Frameworks, and Resources can be shared with other users either by sharing a link to the item or by adding owners and readers (with Admin or View privileges) to the item.")]),e._v(" "),r("p",[e._v("You can only manage users on an item if you are an owner (listed as "),r("em",[e._v("Admin")]),e._v(") for the item.")]),e._v(" "),r("h2",{attrs:{id:"sharing-a-link-to-a-directory-or-framework"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sharing-a-link-to-a-directory-or-framework"}},[e._v("#")]),e._v(" Sharing a Link to a Directory or Framework")]),e._v(" "),r("p",[e._v("To copy a link to a directory or framework:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the name of the item to show its Information on the right side panel.")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Details")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("copy link")])]),e._v(" "),r("ul",[r("li",[e._v("This copies the shareable link to your clipboard")])])])]),e._v(" "),r("p",[e._v("This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(573),alt:"Directory Management - Directories Copy Link"}})]),e._v(" "),r("h2",{attrs:{id:"managing-users-for-an-item"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-for-an-item"}},[e._v("#")]),e._v(" Managing Users for an Item")]),e._v(" "),r("p",[e._v("To control who can view+edit a directory, framework, or resource:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the item to show it in the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(".")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Users")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("manage users and privacy")])]),e._v(".")])]),e._v(" "),r("p",[r("img",{attrs:{src:t(435),alt:"Directory Management - Directories Shareable Link"}})]),e._v(" "),r("p",[e._v("A dialogue window shows options for adding Users or Groups to the item. You can:")]),e._v(" "),r("ul",[r("li",[e._v("View the current list of users with privileges ("),r("em",[e._v("Admin")]),e._v(" or "),r("em",[e._v("View")]),e._v(")")]),e._v(" "),r("li",[e._v("Add new users or organizations")]),e._v(" "),r("li",[e._v("Delete current users or organizations")])]),e._v(" "),r("p",[e._v("The dialogue has an option to set the item as "),r("em",[r("strong",[e._v("Public")])]),e._v(" or "),r("em",[r("strong",[e._v("Private")])])]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Public")]),e._v(" items will be viewable by all users\n"),r("ul",[r("li",[e._v("Public frameworks can be exported when opened")])])])]),e._v(" "),r("p",[e._v("For directories and frameworks, a shareable link shows at the top of the window and provides a button to copy the link to your clipboard. This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(574),alt:"Directory Management - Directories Shareable Link"}})])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{435:function(e,r,t){e.exports=t.p+"assets/img/directory-information-users.fda33476.png"},567:function(e,r,t){e.exports=t.p+"assets/img/directory-copy-link.84a16b04.png"},568:function(e,r,t){e.exports=t.p+"assets/img/directory-shareable-link.cc80078d.png"},662:function(e,r,t){"use strict";t.r(r);var i=t(69),o=Object(i.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"managing-users-and-sharing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-and-sharing"}},[e._v("#")]),e._v(" Managing Users and Sharing")]),e._v(" "),r("p",[e._v("Directories, Frameworks, and Resources can be shared with other users either by sharing a link to the item or by adding owners and readers (with Admin or View privileges) to the item.")]),e._v(" "),r("p",[e._v("You can only manage users on an item if you are an owner (listed as "),r("em",[e._v("Admin")]),e._v(") for the item.")]),e._v(" "),r("h2",{attrs:{id:"sharing-a-link-to-a-directory-or-framework"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sharing-a-link-to-a-directory-or-framework"}},[e._v("#")]),e._v(" Sharing a Link to a Directory or Framework")]),e._v(" "),r("p",[e._v("To copy a link to a directory or framework:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the name of the item to show its Information on the right side panel.")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Details")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("copy link")])]),e._v(" "),r("ul",[r("li",[e._v("This copies the shareable link to your clipboard")])])])]),e._v(" "),r("p",[e._v("This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(567),alt:"Directory Management - Directories Copy Link"}})]),e._v(" "),r("h2",{attrs:{id:"managing-users-for-an-item"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#managing-users-for-an-item"}},[e._v("#")]),e._v(" Managing Users for an Item")]),e._v(" "),r("p",[e._v("To control who can view+edit a directory, framework, or resource:")]),e._v(" "),r("ul",[r("li",[e._v("Click on the item to show it in the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(".")]),e._v(" "),r("li",[e._v("In the "),r("em",[r("strong",[e._v("Users")])]),e._v(" section of the "),r("em",[r("strong",[e._v("Information Panel")])]),e._v(", click on "),r("em",[r("strong",[e._v("manage users and privacy")])]),e._v(".")])]),e._v(" "),r("p",[r("img",{attrs:{src:t(435),alt:"Directory Management - Directories Shareable Link"}})]),e._v(" "),r("p",[e._v("A dialogue window shows options for adding Users or Groups to the item. You can:")]),e._v(" "),r("ul",[r("li",[e._v("View the current list of users with privileges ("),r("em",[e._v("Admin")]),e._v(" or "),r("em",[e._v("View")]),e._v(")")]),e._v(" "),r("li",[e._v("Add new users or organizations")]),e._v(" "),r("li",[e._v("Delete current users or organizations")])]),e._v(" "),r("p",[e._v("The dialogue has an option to set the item as "),r("em",[r("strong",[e._v("Public")])]),e._v(" or "),r("em",[r("strong",[e._v("Private")])])]),e._v(" "),r("ul",[r("li",[r("strong",[e._v("Public")]),e._v(" items will be viewable by all users\n"),r("ul",[r("li",[e._v("Public frameworks can be exported when opened")])])])]),e._v(" "),r("p",[e._v("For directories and frameworks, a shareable link shows at the top of the window and provides a button to copy the link to your clipboard. This option offers a method for sharing directories, given that exporting directories is not available at this time.")]),e._v(" "),r("p",[r("img",{attrs:{src:t(568),alt:"Directory Management - Directories Shareable Link"}})])])}),[],!1,null,null,null);r.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/35.4b4e4c19.js.gz b/docs/assets/js/35.4b4e4c19.js.gz new file mode 100644 index 000000000..f9f202844 Binary files /dev/null and b/docs/assets/js/35.4b4e4c19.js.gz differ diff --git a/docs/assets/js/35.82df053e.js.gz b/docs/assets/js/35.82df053e.js.gz deleted file mode 100644 index 0e6140657..000000000 Binary files a/docs/assets/js/35.82df053e.js.gz and /dev/null differ diff --git a/docs/assets/js/36.a6379492.js b/docs/assets/js/36.ed22e0de.js similarity index 99% rename from docs/assets/js/36.a6379492.js rename to docs/assets/js/36.ed22e0de.js index aa7901473..10c7f9ecb 100644 --- a/docs/assets/js/36.a6379492.js +++ b/docs/assets/js/36.ed22e0de.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{631:function(t,a,s){t.exports=s.p+"assets/img/identities-and-login-1.f1424b3a.png"},632:function(t,a,s){t.exports=s.p+"assets/img/identities-and-login-2.e79745e6.png"},633:function(t,a,s){t.exports=s.p+"assets/img/identities-and-login-3.e9d8a1ce.png"},704:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"identities-and-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identities-and-login"}},[t._v("#")]),t._v(" Identities and Login")]),t._v(" "),a("p",[t._v("CASS is built upon "),a("a",{attrs:{href:"http://opendefinition.org/od/2.1/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Open Data"),a("OutboundLink")],1),t._v(" principles combined with a security and permissioning system built on Public Key Infrastructure.")]),t._v(" "),a("p",[t._v("Actors in the CASS ecosystem can be users, other systems, or applications acting on a user’s behalf. All of these actors use the same tool to identify themselves: A RSA public/private keypair.")]),t._v(" "),a("h2",{attrs:{id:"identities-and-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identities-and-identifiers"}},[t._v("#")]),t._v(" Identities and Identifiers")]),t._v(" "),a("p",[t._v("A PKCS#1 Private Key encoded in the same fashion as a PEM file.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEApcFdsnc3RfyHTcOyiLE6jOmqwa1ifr8ZstvO1X4pSfgWNMiLfGMozGRq5gzlRrCnUP5a4z/qQLZhMnMzFgjpak7PvOpmavRaoW8sJqYlANTCNQlaKXODdWPCs0Zj0DNRwW592BJ2m6iHWWoTUhted3+qlgqszH3JmeTxHwrRoNoThSSk+mKadTQ7K5SfmnXjzR/1PnEXN126x+QlZI2PChcYTOG8/wsgjaHNoBlW7cZDKHLfdZUK8Mvat4fSHygapIUpbX/bP32ninwnaa59UIQW7TI6Zf6cHLJv/JKGVoFG8pqg+8lN6YtcAjYJBp4qQii70tDiu/Yhm4592NUczQIDAQABAoIBAQCjiOK7mBlFiH+pvqFfcZP1wPiCu2DI8hwVtf4b7qwn2Yd3LkFISMDQ32YEcMaodtOs+jaLrNyeWhINZ1EItWQtSXJ1zcGcVlcwnPGvdA5gAolVMFPvP5N8dx96JsGFgYxwzmWEj7rLmntnQVusj2oldiTEgeW4n4YOuq0WVmM6UTdsmIqZgSmLgiQlrXEizfa7kjsAqVx5AuosoEDTj6IqMMZ/qVV7FPCAr0AYEIAoCF5aqXq9EcHGYDzIVS1W21jok+Mr5wDH7Fq2qAxwSNp0p+qDjvEYMWtvc7bmqaJEgY9+mFK+1++HXozfZmZd6xXbprFdVNBd/Q26pDQnc77BAoGBANTuss99B0N/2FNt1c/fuPcZwyDk0UJFCoeuyPmGREYhW1hym74/QZe1UIKgegO4kIjvjBQVe7BtR30jwi/YYuooQN3FF/hszyPLBJVgXpux4ZsAnOn9h5BV1BvGbQXALUWUe16RkGbYlFdDwk3Adv1IZ7oqdPAtgS/Pp/Jvnh3xAoGBAMdH6dZmbgj0dyhymMegvMCSp9GskJqlOa+Bw0ZNBjBTsj2WlEG2x0BwpmXFBPgy5kmxXqiaba6PTr66A68s7Pb7WNlR623Gx5sRWE3UUQnX7F7fllZCYAtZiJ8+0a1+BenXXs/KYKDI5AdyxC0XwMReqSPhk8kly/s/lexs6MCdAoGAP0Ft8z+0QbQgAqDVbLyMiTOpCQOQurwh5a7h22asr5zHMx5Q8BKAnN3rPfMIbESPA28OUQUUypOcMivGS0pgECnHI1qixVUlr/9mrC2FzYDpgY+MDeMYO6OTsHChAJ1XlZ0HjU9282aRot7pQQnVD2dMETz9okASaa6puNa5xTECgYEAwKC12wX19PgBunpTThwEeA0K5PVubd2qTgkbrffENLCiiT/lnUPFhHefkJ4KOLRSwAcQXd+wh9yEnH4IE6tUf0TkVGUIMnvD9BOnDMxfbSlnlSmBE25jknUASBYb7hz0MF57ilWwY5rsOHrqQEBGmEp8Km/hP70mWH3VOMzpi00CgYAdCs3i6JGIjST3CTKNF7PievnLz6ni9I1h0G2h6PRcKDJQRegrOCp1ZOhnSuCklw1LBZuZOF3Hninmc0kAOkoNkmaOuXShwD33trDY58e09KJgoHD9zxYUjMJfS7IkRYd9vJ/rvKE35c8Q6NuwzJ25avO3+6p+7hMKYEWf+XCodg==-----END RSA PRIVATE KEY-----\n")])])]),a("p",[t._v("The corresponding PKCS#8 Public Key.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApcFdsnc3RfyHTcOyiLE6jOmqwa1ifr8ZstvO1X4pSfgWNMiLfGMozGRq5gzlRrCnUP5a4z/qQLZhMnMzFgjpak7PvOpmavRaoW8sJqYlANTCNQlaKXODdWPCs0Zj0DNRwW592BJ2m6iHWWoTUhted3+qlgqszH3JmeTxHwrRoNoThSSk+mKadTQ7K5SfmnXjzR/1PnEXN126x+QlZI2PChcYTOG8/wsgjaHNoBlW7cZDKHLfdZUK8Mvat4fSHygapIUpbX/bP32ninwnaa59UIQW7TI6Zf6cHLJv/JKGVoFG8pqg+8lN6YtcAjYJBp4qQii70tDiu/Yhm4592NUczQIDAQAB-----END PUBLIC KEY-----\n")])])]),a("p",[t._v("Encodings of Private Keys include the Public Key and we denote by “"),a("strong",[t._v("PPK")]),t._v("” (Public/Private Keypair). “"),a("strong",[t._v("PK")]),t._v("” is used to denote just the Public Key. CASS refers to the PPK as an ‘"),a("em",[t._v("identity")]),t._v("’ and its PK portion is an ‘"),a("em",[t._v("identifier")]),t._v("’.")]),t._v(" "),a("h2",{attrs:{id:"owners-readers-actions-and-signature-sheets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#owners-readers-actions-and-signature-sheets"}},[t._v("#")]),t._v(" Owners, Readers, Actions and Signature Sheets")]),t._v(" "),a("p",[t._v("All permissioned objects in CASS have an "),a("code",[t._v("@owner")]),t._v(" field that contains the identifier of the identity that owns it. All compliant CASS repositories will validate the "),a("code",[t._v("@owner")]),t._v(" field against a “Signature Sheet” before allowing a privileged action to occur.")]),t._v(" "),a("p",[t._v("A "),a("strong",[t._v("Signature Sheet")]),t._v(" is a token that a client sends to the repository to authorize the repository to perform a privileged action. It includes:")]),t._v(" "),a("ul",[a("li",[t._v("An identifier")]),t._v(" "),a("li",[t._v("A timestamp")]),t._v(" "),a("li",[t._v("An expiration timestamp")]),t._v(" "),a("li",[t._v("A cryptographic signature, that can be verified using a PK.")])]),t._v(" "),a("p",[t._v("The authentication of the signature against the PK states that the person who sent it has the corresponding PPK. This authorizes the repository to act on that actor’s behalf.")]),t._v(" "),a("p",[t._v("Privileged actions are:")]),t._v(" "),a("ul",[a("li",[t._v("("),a("strong",[t._v("@owner")]),t._v(" or "),a("strong",[t._v("@reader")]),t._v(") Returning data that is encrypted\n"),a("ul",[a("li",[a("em",[t._v("Note: the repository is not able to decrypt the data.")])])])]),t._v(" "),a("li",[t._v("("),a("strong",[t._v("@owner")]),t._v(" only) Updating data that is owned.")]),t._v(" "),a("li",[t._v("("),a("strong",[t._v("@owner")]),t._v(" or server admin) Deleting data")]),t._v(" "),a("li",[t._v("(varies) Any custom API operation that includes any of these actions")]),t._v(" "),a("li",[t._v("(coming soon, "),a("strong",[t._v("@controller")]),t._v(") Changing the readers allowed to read data")])]),t._v(" "),a("p",[t._v("Non-privileged actions are:")]),t._v(" "),a("ul",[a("li",[t._v("Reading data\n"),a("ul",[a("li",[t._v("The repository will trim any encrypted data from the result")])])]),t._v(" "),a("li",[t._v("Creating data\n"),a("ul",[a("li",[t._v("You can create data with @owners, and those owners can be identifiers that you do not have the identities for")])])])]),t._v(" "),a("h2",{attrs:{id:"individuals-systems-and-their-relation-to-identities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#individuals-systems-and-their-relation-to-identities"}},[t._v("#")]),t._v(" Individuals, Systems, and their relation to Identities")]),t._v(" "),a("p",[t._v("In most systems, an actor will have some credentials that tie in with an account that allow them to operate an application or use services. The desired outcome is that a user account on a system is strongly tied to an individual.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(631),alt:"Visual"}})]),t._v(" "),a("p",[t._v("This is also possible with PKI.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(632),alt:"Visual"}})]),t._v(" "),a("p",[t._v("However, individuals often act in different capacities throughout the day, and there is value in separating these identities. As an example, an individual may have been a student in more than one school, may have been employed in multiple locations, and may act in different capacities in an organization. Each one of those should be, for the sake of privacy, security, and compartmentalization, different identities.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(633),alt:"Visual"}})]),t._v(" "),a("p",[t._v("Additionally, there is often little value in disclosing user’s personal information as a user of the system. Similar to OAuth2, all real-world identifying information is, by default, not associated with an identity. This level of anonymity is intended to satisfy privacy law while allowing CASS Repositories to be publically federated.")]),t._v(" "),a("p",[t._v("As a result, individuals, systems, groups and other actors can operate and query across server boundaries with far fewer privacy concerns, but still retain strong security and permissioning practices.")]),t._v(" "),a("h2",{attrs:{id:"login-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login-requirements"}},[t._v("#")]),t._v(" Login Requirements")]),t._v(" "),a("blockquote",[a("p",[t._v("No-Knowledge (adj): Having the attribute of being able to store information without the ability to access that information. Often associated with cryptographically secure storage.")])]),t._v(" "),a("p",[t._v("CASS comes with a no-knowledge keystore (called the "),a("strong",[t._v("Remote Identity Manager")]),t._v(") that allows users to operate CASS with a username and password. It is typically not reasonable to require individuals to manage their own encryption keys. It does not have login recovery capabilities, and is generally not recommended.")]),t._v(" "),a("p",[t._v("CASS is compatible with any login or SSO system that can store or provide a place to hold a PPK. The individual’s keys should be retrievable in case they wish to use other tools to operate on or view their data.")]),t._v(" "),a("h2",{attrs:{id:"examples"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[t._v("#")]),t._v(" Login")]),t._v(" "),a("ol",[a("li",[t._v("Configure a remote identity manager."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" m "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcRemoteIdentityManager")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("server "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Sets the identity server endpoint")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureFromServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Retrieves username and password salts from the server.")]),t._v("\n")])])])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),a("p",[a("em",[t._v("console.log")]),t._v(" and "),a("em",[t._v("console.error")]),t._v(" are the success and failure methods. If you are doing this in an async environment, such as a web browser, you will need to change console.log into a callback that does the below steps.")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[t._v("Begin the login process.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("startLogin")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testUsername"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testPassword"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Creates the hashes for storage and retrieval of keys.")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This retrieves the identities and encryption keys from the server.")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Verify the identities and contacts are available.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Should show one EcIdentity in an array")]),t._v("\nEcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Probably will show no contacts.")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"user-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#user-creation"}},[t._v("#")]),t._v(" User Creation")]),t._v(" "),a("ol",[a("li",[t._v("Configure a remote identity manager."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("m "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcRemoteIdentityManager")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("server "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Sets the identity server endpoint")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureFromServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Retrieves username and password salts from the server.")]),t._v("\n")])])])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),a("p",[a("em",[t._v("console.log")]),t._v(" and "),a("em",[t._v("console.error")]),t._v(" are the success and failure methods. If you are doing this in an async environment, such as a web browser, you will need to change console.log into a callback that does the below steps.")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[t._v("Ask the server to create the user, fetch the token for the account it created, generate a key, then commit the key back to the server.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("clear")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("startLogin")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testUsername2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testPassword2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Creates the hashes for storage and retrieval of keys.")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("create")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Asks the server to create this account.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Fetch the account (we need a token in there to commit)")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n EcPpk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateKeyAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generate a PPK")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("ppk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" identity "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcIdentity")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Create a new identity")]),t._v("\n identity"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("displayName "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Frank"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Give the identity a local display name")]),t._v("\n identity"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Assign the ppk to the identity")]),t._v("\n EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addIdentity")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("identity"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the identity to our list of identities")]),t._v("\n m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("commit")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Save our information back to the server")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"We did it."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Declare victory")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Verify the identities and contacts are available for use.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Should show one EcIdentity in an array")]),t._v("\nEcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Probably will show no contacts")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"ecidentity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecidentity"}},[t._v("#")]),t._v(" EcIdentity")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("Identities are stored in the EcIdentityManager as EcIdentity objects.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Identities have the following fields:")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("displayName")]),t._v(" - The name given to an identity. This is not authoritative."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("displayName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("ppk")]),t._v(" - The EcPpk public/private keypair in object form."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("source")]),t._v(" - The server endpoint that the identity is primarily associated with."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source\n")])])])])])]),t._v(" "),a("li",[a("p",[t._v("Identities have the following functions:")]),t._v(" "),a("ul",[a("li",[t._v("Convert the identity to an EcContact"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toContact")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Convert the identity to or from a JSON serializable object"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toCredential")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromCredential")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("credential"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])])])]),t._v(" "),a("h3",{attrs:{id:"ecppk"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecppk"}},[t._v("#")]),t._v(" EcPpk")]),t._v(" "),a("p",[t._v("An EcPpk is a public/private keypair helper object that wraps an actor identity in CASS. The object can transform and serialize the key contained within.")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("EcPpks can serialize to:")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("PEM String")]),t._v(" (PKCS#1 by default)"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#1 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs1Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#8 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs8Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])])]),t._v(" "),a("li",[a("p",[t._v("EcPpks can also extract the public key portion as a EcPk object.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("EcPpks are used in some cryptographic operations. See the following classes for details.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("EcRsaOaep")])]),t._v(" "),a("li",[a("strong",[t._v("EcRsaOaepAsync")])])])]),t._v(" "),a("li",[a("p",[t._v("EcPpks are also commonly used in cryptographic methods in securing objects. See Securing Objects for more details.")])])]),t._v(" "),a("h4",{attrs:{id:"ecpk"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecpk"}},[t._v("#")]),t._v(" EcPk")]),t._v(" "),a("p",[t._v("An EcPk is a public key helper object that represents an actor identifier in CASS. The object can transform and serialize the key contained within.")]),t._v(" "),a("ol",[a("li",[t._v("EcPks can serialize to:\n"),a("ul",[a("li",[a("strong",[t._v("PEM String")]),t._v(" (PKCS#8 by default)"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#1 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs1Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#8 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs8Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])])]),t._v(" "),a("li",[t._v("EcPks are used in some cryptographic operations. See the following classes for details\n"),a("ul",[a("li",[a("strong",[t._v("EcRsaOaep")])]),t._v(" "),a("li",[a("strong",[t._v("EcRsaOaepAsync")])])])]),t._v(" "),a("li",[t._v("EcPks are also commonly used in cryptographic methods in securing objects.\n")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{631:function(t,a,s){t.exports=s.p+"assets/img/identities-and-login-1.f1424b3a.png"},632:function(t,a,s){t.exports=s.p+"assets/img/identities-and-login-2.e79745e6.png"},633:function(t,a,s){t.exports=s.p+"assets/img/identities-and-login-3.e9d8a1ce.png"},703:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"identities-and-login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identities-and-login"}},[t._v("#")]),t._v(" Identities and Login")]),t._v(" "),a("p",[t._v("CASS is built upon "),a("a",{attrs:{href:"http://opendefinition.org/od/2.1/en/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Open Data"),a("OutboundLink")],1),t._v(" principles combined with a security and permissioning system built on Public Key Infrastructure.")]),t._v(" "),a("p",[t._v("Actors in the CASS ecosystem can be users, other systems, or applications acting on a user’s behalf. All of these actors use the same tool to identify themselves: A RSA public/private keypair.")]),t._v(" "),a("h2",{attrs:{id:"identities-and-identifiers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#identities-and-identifiers"}},[t._v("#")]),t._v(" Identities and Identifiers")]),t._v(" "),a("p",[t._v("A PKCS#1 Private Key encoded in the same fashion as a PEM file.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEApcFdsnc3RfyHTcOyiLE6jOmqwa1ifr8ZstvO1X4pSfgWNMiLfGMozGRq5gzlRrCnUP5a4z/qQLZhMnMzFgjpak7PvOpmavRaoW8sJqYlANTCNQlaKXODdWPCs0Zj0DNRwW592BJ2m6iHWWoTUhted3+qlgqszH3JmeTxHwrRoNoThSSk+mKadTQ7K5SfmnXjzR/1PnEXN126x+QlZI2PChcYTOG8/wsgjaHNoBlW7cZDKHLfdZUK8Mvat4fSHygapIUpbX/bP32ninwnaa59UIQW7TI6Zf6cHLJv/JKGVoFG8pqg+8lN6YtcAjYJBp4qQii70tDiu/Yhm4592NUczQIDAQABAoIBAQCjiOK7mBlFiH+pvqFfcZP1wPiCu2DI8hwVtf4b7qwn2Yd3LkFISMDQ32YEcMaodtOs+jaLrNyeWhINZ1EItWQtSXJ1zcGcVlcwnPGvdA5gAolVMFPvP5N8dx96JsGFgYxwzmWEj7rLmntnQVusj2oldiTEgeW4n4YOuq0WVmM6UTdsmIqZgSmLgiQlrXEizfa7kjsAqVx5AuosoEDTj6IqMMZ/qVV7FPCAr0AYEIAoCF5aqXq9EcHGYDzIVS1W21jok+Mr5wDH7Fq2qAxwSNp0p+qDjvEYMWtvc7bmqaJEgY9+mFK+1++HXozfZmZd6xXbprFdVNBd/Q26pDQnc77BAoGBANTuss99B0N/2FNt1c/fuPcZwyDk0UJFCoeuyPmGREYhW1hym74/QZe1UIKgegO4kIjvjBQVe7BtR30jwi/YYuooQN3FF/hszyPLBJVgXpux4ZsAnOn9h5BV1BvGbQXALUWUe16RkGbYlFdDwk3Adv1IZ7oqdPAtgS/Pp/Jvnh3xAoGBAMdH6dZmbgj0dyhymMegvMCSp9GskJqlOa+Bw0ZNBjBTsj2WlEG2x0BwpmXFBPgy5kmxXqiaba6PTr66A68s7Pb7WNlR623Gx5sRWE3UUQnX7F7fllZCYAtZiJ8+0a1+BenXXs/KYKDI5AdyxC0XwMReqSPhk8kly/s/lexs6MCdAoGAP0Ft8z+0QbQgAqDVbLyMiTOpCQOQurwh5a7h22asr5zHMx5Q8BKAnN3rPfMIbESPA28OUQUUypOcMivGS0pgECnHI1qixVUlr/9mrC2FzYDpgY+MDeMYO6OTsHChAJ1XlZ0HjU9282aRot7pQQnVD2dMETz9okASaa6puNa5xTECgYEAwKC12wX19PgBunpTThwEeA0K5PVubd2qTgkbrffENLCiiT/lnUPFhHefkJ4KOLRSwAcQXd+wh9yEnH4IE6tUf0TkVGUIMnvD9BOnDMxfbSlnlSmBE25jknUASBYb7hz0MF57ilWwY5rsOHrqQEBGmEp8Km/hP70mWH3VOMzpi00CgYAdCs3i6JGIjST3CTKNF7PievnLz6ni9I1h0G2h6PRcKDJQRegrOCp1ZOhnSuCklw1LBZuZOF3Hninmc0kAOkoNkmaOuXShwD33trDY58e09KJgoHD9zxYUjMJfS7IkRYd9vJ/rvKE35c8Q6NuwzJ25avO3+6p+7hMKYEWf+XCodg==-----END RSA PRIVATE KEY-----\n")])])]),a("p",[t._v("The corresponding PKCS#8 Public Key.")]),t._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApcFdsnc3RfyHTcOyiLE6jOmqwa1ifr8ZstvO1X4pSfgWNMiLfGMozGRq5gzlRrCnUP5a4z/qQLZhMnMzFgjpak7PvOpmavRaoW8sJqYlANTCNQlaKXODdWPCs0Zj0DNRwW592BJ2m6iHWWoTUhted3+qlgqszH3JmeTxHwrRoNoThSSk+mKadTQ7K5SfmnXjzR/1PnEXN126x+QlZI2PChcYTOG8/wsgjaHNoBlW7cZDKHLfdZUK8Mvat4fSHygapIUpbX/bP32ninwnaa59UIQW7TI6Zf6cHLJv/JKGVoFG8pqg+8lN6YtcAjYJBp4qQii70tDiu/Yhm4592NUczQIDAQAB-----END PUBLIC KEY-----\n")])])]),a("p",[t._v("Encodings of Private Keys include the Public Key and we denote by “"),a("strong",[t._v("PPK")]),t._v("” (Public/Private Keypair). “"),a("strong",[t._v("PK")]),t._v("” is used to denote just the Public Key. CASS refers to the PPK as an ‘"),a("em",[t._v("identity")]),t._v("’ and its PK portion is an ‘"),a("em",[t._v("identifier")]),t._v("’.")]),t._v(" "),a("h2",{attrs:{id:"owners-readers-actions-and-signature-sheets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#owners-readers-actions-and-signature-sheets"}},[t._v("#")]),t._v(" Owners, Readers, Actions and Signature Sheets")]),t._v(" "),a("p",[t._v("All permissioned objects in CASS have an "),a("code",[t._v("@owner")]),t._v(" field that contains the identifier of the identity that owns it. All compliant CASS repositories will validate the "),a("code",[t._v("@owner")]),t._v(" field against a “Signature Sheet” before allowing a privileged action to occur.")]),t._v(" "),a("p",[t._v("A "),a("strong",[t._v("Signature Sheet")]),t._v(" is a token that a client sends to the repository to authorize the repository to perform a privileged action. It includes:")]),t._v(" "),a("ul",[a("li",[t._v("An identifier")]),t._v(" "),a("li",[t._v("A timestamp")]),t._v(" "),a("li",[t._v("An expiration timestamp")]),t._v(" "),a("li",[t._v("A cryptographic signature, that can be verified using a PK.")])]),t._v(" "),a("p",[t._v("The authentication of the signature against the PK states that the person who sent it has the corresponding PPK. This authorizes the repository to act on that actor’s behalf.")]),t._v(" "),a("p",[t._v("Privileged actions are:")]),t._v(" "),a("ul",[a("li",[t._v("("),a("strong",[t._v("@owner")]),t._v(" or "),a("strong",[t._v("@reader")]),t._v(") Returning data that is encrypted\n"),a("ul",[a("li",[a("em",[t._v("Note: the repository is not able to decrypt the data.")])])])]),t._v(" "),a("li",[t._v("("),a("strong",[t._v("@owner")]),t._v(" only) Updating data that is owned.")]),t._v(" "),a("li",[t._v("("),a("strong",[t._v("@owner")]),t._v(" or server admin) Deleting data")]),t._v(" "),a("li",[t._v("(varies) Any custom API operation that includes any of these actions")]),t._v(" "),a("li",[t._v("(coming soon, "),a("strong",[t._v("@controller")]),t._v(") Changing the readers allowed to read data")])]),t._v(" "),a("p",[t._v("Non-privileged actions are:")]),t._v(" "),a("ul",[a("li",[t._v("Reading data\n"),a("ul",[a("li",[t._v("The repository will trim any encrypted data from the result")])])]),t._v(" "),a("li",[t._v("Creating data\n"),a("ul",[a("li",[t._v("You can create data with @owners, and those owners can be identifiers that you do not have the identities for")])])])]),t._v(" "),a("h2",{attrs:{id:"individuals-systems-and-their-relation-to-identities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#individuals-systems-and-their-relation-to-identities"}},[t._v("#")]),t._v(" Individuals, Systems, and their relation to Identities")]),t._v(" "),a("p",[t._v("In most systems, an actor will have some credentials that tie in with an account that allow them to operate an application or use services. The desired outcome is that a user account on a system is strongly tied to an individual.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(631),alt:"Visual"}})]),t._v(" "),a("p",[t._v("This is also possible with PKI.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(632),alt:"Visual"}})]),t._v(" "),a("p",[t._v("However, individuals often act in different capacities throughout the day, and there is value in separating these identities. As an example, an individual may have been a student in more than one school, may have been employed in multiple locations, and may act in different capacities in an organization. Each one of those should be, for the sake of privacy, security, and compartmentalization, different identities.")]),t._v(" "),a("p",[a("img",{attrs:{src:s(633),alt:"Visual"}})]),t._v(" "),a("p",[t._v("Additionally, there is often little value in disclosing user’s personal information as a user of the system. Similar to OAuth2, all real-world identifying information is, by default, not associated with an identity. This level of anonymity is intended to satisfy privacy law while allowing CASS Repositories to be publically federated.")]),t._v(" "),a("p",[t._v("As a result, individuals, systems, groups and other actors can operate and query across server boundaries with far fewer privacy concerns, but still retain strong security and permissioning practices.")]),t._v(" "),a("h2",{attrs:{id:"login-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login-requirements"}},[t._v("#")]),t._v(" Login Requirements")]),t._v(" "),a("blockquote",[a("p",[t._v("No-Knowledge (adj): Having the attribute of being able to store information without the ability to access that information. Often associated with cryptographically secure storage.")])]),t._v(" "),a("p",[t._v("CASS comes with a no-knowledge keystore (called the "),a("strong",[t._v("Remote Identity Manager")]),t._v(") that allows users to operate CASS with a username and password. It is typically not reasonable to require individuals to manage their own encryption keys. It does not have login recovery capabilities, and is generally not recommended.")]),t._v(" "),a("p",[t._v("CASS is compatible with any login or SSO system that can store or provide a place to hold a PPK. The individual’s keys should be retrievable in case they wish to use other tools to operate on or view their data.")]),t._v(" "),a("h2",{attrs:{id:"examples"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),a("h3",{attrs:{id:"login"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#login"}},[t._v("#")]),t._v(" Login")]),t._v(" "),a("ol",[a("li",[t._v("Configure a remote identity manager."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" m "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcRemoteIdentityManager")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("server "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Sets the identity server endpoint")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureFromServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Retrieves username and password salts from the server.")]),t._v("\n")])])])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),a("p",[a("em",[t._v("console.log")]),t._v(" and "),a("em",[t._v("console.error")]),t._v(" are the success and failure methods. If you are doing this in an async environment, such as a web browser, you will need to change console.log into a callback that does the below steps.")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[t._v("Begin the login process.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("startLogin")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testUsername"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testPassword"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Creates the hashes for storage and retrieval of keys.")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//This retrieves the identities and encryption keys from the server.")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Verify the identities and contacts are available.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Should show one EcIdentity in an array")]),t._v("\nEcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Probably will show no contacts.")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"user-creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#user-creation"}},[t._v("#")]),t._v(" User Creation")]),t._v(" "),a("ol",[a("li",[t._v("Configure a remote identity manager."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("m "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcRemoteIdentityManager")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("server "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Sets the identity server endpoint")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("configureFromServer")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Retrieves username and password salts from the server.")]),t._v("\n")])])])])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),a("p",[a("em",[t._v("console.log")]),t._v(" and "),a("em",[t._v("console.error")]),t._v(" are the success and failure methods. If you are doing this in an async environment, such as a web browser, you will need to change console.log into a callback that does the below steps.")])]),t._v(" "),a("ol",{attrs:{start:"2"}},[a("li",[a("p",[t._v("Ask the server to create the user, fetch the token for the account it created, generate a key, then commit the key back to the server.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("clear")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("startLogin")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testUsername2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"testPassword2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Creates the hashes for storage and retrieval of keys.")]),t._v("\nm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("create")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Asks the server to create this account.")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("fetch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Fetch the account (we need a token in there to commit)")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n EcPpk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateKeyAsync")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Generate a PPK")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("ppk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" identity "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcIdentity")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Create a new identity")]),t._v("\n identity"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("displayName "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Frank"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Give the identity a local display name")]),t._v("\n identity"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Assign the ppk to the identity")]),t._v("\n EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addIdentity")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("identity"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the identity to our list of identities")]),t._v("\n m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("commit")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Save our information back to the server")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"We did it."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Declare victory")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n console"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Verify the identities and contacts are available for use.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Should show one EcIdentity in an array")]),t._v("\nEcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Probably will show no contacts")]),t._v("\n")])])])])]),t._v(" "),a("h3",{attrs:{id:"ecidentity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecidentity"}},[t._v("#")]),t._v(" EcIdentity")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("Identities are stored in the EcIdentityManager as EcIdentity objects.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("Identities have the following fields:")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("displayName")]),t._v(" - The name given to an identity. This is not authoritative."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("displayName"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("ppk")]),t._v(" - The EcPpk public/private keypair in object form."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("source")]),t._v(" - The server endpoint that the identity is primarily associated with."),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source\n")])])])])])]),t._v(" "),a("li",[a("p",[t._v("Identities have the following functions:")]),t._v(" "),a("ul",[a("li",[t._v("Convert the identity to an EcContact"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toContact")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("li",[t._v("Convert the identity to or from a JSON serializable object"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toCredential")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nEcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromCredential")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("credential"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])])])])]),t._v(" "),a("h3",{attrs:{id:"ecppk"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecppk"}},[t._v("#")]),t._v(" EcPpk")]),t._v(" "),a("p",[t._v("An EcPpk is a public/private keypair helper object that wraps an actor identity in CASS. The object can transform and serialize the key contained within.")]),t._v(" "),a("ol",[a("li",[a("p",[t._v("EcPpks can serialize to:")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("PEM String")]),t._v(" (PKCS#1 by default)"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#1 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs1Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#8 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs8Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])])]),t._v(" "),a("li",[a("p",[t._v("EcPpks can also extract the public key portion as a EcPk object.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("p",[t._v("EcPpks are used in some cryptographic operations. See the following classes for details.")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("EcRsaOaep")])]),t._v(" "),a("li",[a("strong",[t._v("EcRsaOaepAsync")])])])]),t._v(" "),a("li",[a("p",[t._v("EcPpks are also commonly used in cryptographic methods in securing objects. See Securing Objects for more details.")])])]),t._v(" "),a("h4",{attrs:{id:"ecpk"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ecpk"}},[t._v("#")]),t._v(" EcPk")]),t._v(" "),a("p",[t._v("An EcPk is a public key helper object that represents an actor identifier in CASS. The object can transform and serialize the key contained within.")]),t._v(" "),a("ol",[a("li",[t._v("EcPks can serialize to:\n"),a("ul",[a("li",[a("strong",[t._v("PEM String")]),t._v(" (PKCS#8 by default)"),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#1 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs1Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])]),t._v(" "),a("li",[a("strong",[t._v("PKCS#8 PEM")]),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPkcs8Pem")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])])]),t._v(" "),a("li",[t._v("EcPks are used in some cryptographic operations. See the following classes for details\n"),a("ul",[a("li",[a("strong",[t._v("EcRsaOaep")])]),t._v(" "),a("li",[a("strong",[t._v("EcRsaOaepAsync")])])])]),t._v(" "),a("li",[t._v("EcPks are also commonly used in cryptographic methods in securing objects.\n")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/36.a6379492.js.gz b/docs/assets/js/36.ed22e0de.js.gz similarity index 97% rename from docs/assets/js/36.a6379492.js.gz rename to docs/assets/js/36.ed22e0de.js.gz index eb9b1f1ce..79ac109c7 100644 Binary files a/docs/assets/js/36.a6379492.js.gz and b/docs/assets/js/36.ed22e0de.js.gz differ diff --git a/docs/assets/js/39.728f5bf5.js b/docs/assets/js/39.5801bab7.js similarity index 95% rename from docs/assets/js/39.728f5bf5.js rename to docs/assets/js/39.5801bab7.js index 960666513..c5c3cc4c8 100644 --- a/docs/assets/js/39.728f5bf5.js +++ b/docs/assets/js/39.5801bab7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{503:function(s,t){s.exports="data:image/png;base64,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"},504:function(s,t,e){s.exports=e.p+"assets/img/assertion-share-dialog.0dd3facc.png"},655:function(s,t,e){"use strict";e.r(t);var i=e(69),r=Object(i.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"sharing-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sharing-assertions"}},[s._v("#")]),s._v(" Sharing Assertions")]),s._v(" "),t("p",[t("strong",[s._v("Sharing assertions is only available to logged in users, ensure you are logged in to the application before continuing.")])]),s._v(" "),t("p",[s._v("To share assertions, click the button indicated below in the left navigation bar.")]),s._v(" "),t("p",[t("img",{attrs:{src:e(503),alt:"Assertion Share Button"}})]),s._v(" "),t("p",[s._v("In the resulting dialog, select the subject(s) of the assertions and the user(s) whom you wish to share those assertion with, and then press the share button.")]),s._v(" "),t("p",[t("img",{attrs:{src:e(504),alt:"Assertion Share Dialog"}})])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{483:function(s,t){s.exports="data:image/png;base64,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"},484:function(s,t,e){s.exports=e.p+"assets/img/assertion-share-dialog.0dd3facc.png"},654:function(s,t,e){"use strict";e.r(t);var i=e(69),r=Object(i.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"sharing-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sharing-assertions"}},[s._v("#")]),s._v(" Sharing Assertions")]),s._v(" "),t("p",[t("strong",[s._v("Sharing assertions is only available to logged in users, ensure you are logged in to the application before continuing.")])]),s._v(" "),t("p",[s._v("To share assertions, click the button indicated below in the left navigation bar.")]),s._v(" "),t("p",[t("img",{attrs:{src:e(483),alt:"Assertion Share Button"}})]),s._v(" "),t("p",[s._v("In the resulting dialog, select the subject(s) of the assertions and the user(s) whom you wish to share those assertion with, and then press the share button.")]),s._v(" "),t("p",[t("img",{attrs:{src:e(484),alt:"Assertion Share Dialog"}})])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/39.5801bab7.js.gz b/docs/assets/js/39.5801bab7.js.gz new file mode 100644 index 000000000..e7924bd55 Binary files /dev/null and b/docs/assets/js/39.5801bab7.js.gz differ diff --git a/docs/assets/js/39.728f5bf5.js.gz b/docs/assets/js/39.728f5bf5.js.gz deleted file mode 100644 index 962b8f30e..000000000 Binary files a/docs/assets/js/39.728f5bf5.js.gz and /dev/null differ diff --git a/docs/assets/js/40.5be37cee.js.gz b/docs/assets/js/40.5be37cee.js.gz deleted file mode 100644 index 1168694f7..000000000 Binary files a/docs/assets/js/40.5be37cee.js.gz and /dev/null differ diff --git a/docs/assets/js/40.5be37cee.js b/docs/assets/js/40.e8e913b2.js similarity index 96% rename from docs/assets/js/40.5be37cee.js rename to docs/assets/js/40.e8e913b2.js index 0c70e3940..26ebd0aed 100644 --- a/docs/assets/js/40.5be37cee.js +++ b/docs/assets/js/40.e8e913b2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{437:function(e,t,r){e.exports=r.p+"assets/img/exporting-frameworks.f24ff6ab.png"},438:function(e,t,r){e.exports=r.p+"assets/img/select-option-export.74ccd2cc.png"},663:function(e,t,r){"use strict";r.r(t);var o=r(69),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"exporting-a-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#exporting-a-competency-framework"}},[e._v("#")]),e._v(" Exporting a Competency Framework")]),e._v(" "),t("p",[e._v("Once you’ve created or imported a new framework, exporting the framework is a relatively simple process. Users must first view their frameworks through the "),t("em",[t("strong",[e._v("frameworks")])]),e._v(" tab in the CaSS Authoring Tool and select the desired framework to be exported. Once the framework is selected, users can select the "),t("em",[t("strong",[e._v("export")])]),e._v(" button at the top of the screen and will be prompted to choose their desired file format to export that framework.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(437),alt:"CAT Competency Framework Management - Exporting Frameworks"}})]),e._v(" "),t("p",[e._v("Users will be prompted with the window displayed below and can select their desired file format from the options provided in the dropdown menu.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(438),alt:"CAT Competency Framework Management - Select Export Option"}})]),e._v(" "),t("p",[e._v("Once the desired format is selected users can select the "),t("em",[t("strong",[e._v("export file")])]),e._v(" button at the bottom right corner of the window and the competency will be downloaded to your computer or opened in a new tab of your browser.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{437:function(e,t,r){e.exports=r.p+"assets/img/exporting-frameworks.f24ff6ab.png"},438:function(e,t,r){e.exports=r.p+"assets/img/select-option-export.74ccd2cc.png"},661:function(e,t,r){"use strict";r.r(t);var o=r(69),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"exporting-a-competency-framework"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#exporting-a-competency-framework"}},[e._v("#")]),e._v(" Exporting a Competency Framework")]),e._v(" "),t("p",[e._v("Once you’ve created or imported a new framework, exporting the framework is a relatively simple process. Users must first view their frameworks through the "),t("em",[t("strong",[e._v("frameworks")])]),e._v(" tab in the CaSS Authoring Tool and select the desired framework to be exported. Once the framework is selected, users can select the "),t("em",[t("strong",[e._v("export")])]),e._v(" button at the top of the screen and will be prompted to choose their desired file format to export that framework.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(437),alt:"CAT Competency Framework Management - Exporting Frameworks"}})]),e._v(" "),t("p",[e._v("Users will be prompted with the window displayed below and can select their desired file format from the options provided in the dropdown menu.")]),e._v(" "),t("p",[t("img",{attrs:{src:r(438),alt:"CAT Competency Framework Management - Select Export Option"}})]),e._v(" "),t("p",[e._v("Once the desired format is selected users can select the "),t("em",[t("strong",[e._v("export file")])]),e._v(" button at the bottom right corner of the window and the competency will be downloaded to your computer or opened in a new tab of your browser.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/40.e8e913b2.js.gz b/docs/assets/js/40.e8e913b2.js.gz new file mode 100644 index 000000000..ca53c9d49 Binary files /dev/null and b/docs/assets/js/40.e8e913b2.js.gz differ diff --git a/docs/assets/js/41.de2955e8.js b/docs/assets/js/41.93f87c9e.js similarity index 99% rename from docs/assets/js/41.de2955e8.js rename to docs/assets/js/41.93f87c9e.js index 3ad3341db..01e20c5c1 100644 --- a/docs/assets/js/41.de2955e8.js +++ b/docs/assets/js/41.93f87c9e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{634:function(e,t,a){e.exports=a.p+"assets/img/centralized-competency-profile.7c3bc92c.png"},718:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"assertion-processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processing"}},[e._v("#")]),e._v(" Assertion Processing")]),e._v(" "),t("p",[t("em",[e._v("Last updated 2018-12-13")])]),e._v(" "),t("h2",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("This page describes:")]),e._v(" "),t("ul",[t("li",[e._v("How Assertions (claims of competency made on behalf of an “entity”) are stored in CaSS")]),e._v(" "),t("li",[e._v("How third-party applications query CaSS to determine competencies held by an entity")]),e._v(" "),t("li",[e._v("How CaSS responds to such queries")]),e._v(" "),t("li",[e._v("How CaSS can be used as a more traditional “profile manager.”")]),e._v(" "),t("li",[e._v("How CaSS implements the ADL Total Learning Architecture “profile API.”")])]),e._v(" "),t("p",[e._v("This page describes the procedure CaSS currently uses to answer a query about a person’s competency and the procedure that is proposed for future releases. The form of the query is “Does subject hold competency C?”")]),e._v(" "),t("ul",[t("li",[e._v("The subject is the person whose competence is being queried")]),e._v(" "),t("li",[e._v("The competency C being queried is called the root competency")])]),e._v(" "),t("p",[e._v("This page only describes the algorithms, and does not address security, privacy, or the interaction of the assertion processing and query/response mechanisms with external systems.")]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("CaSS is designed to collect and provide information about a learner’s or employee’s competencies and skills to systems used in education, training, talent management, and workforce development. The simplest way to conceptualize the role of CaSS is as a “profile service” that collects, maintains, and publishes a list of the competencies that a learner or employee or job applicant has mastered (Figure 1). CaSS can operate in this mode, but this conceptualization fails to recognize the many real-world complexities and requirements surrounding the collection and determination of competencies. This section briefly discusses these as informative background.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(634),alt:"Image"}})]),e._v(" "),t("h3",{attrs:{id:"competency-articulation-via-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-articulation-via-relations"}},[e._v("#")]),e._v(" Competency Articulation via Relations")]),e._v(" "),t("p",[e._v("The first (and most obvious) requirement for sharing competency records among multiple systems is that they reference the same competencies or, barring that, have the ability to articulate different sets of competencies that address related skills, knowledge, and ability. The CaSS framework and competency services enable systems to reference common sets of competencies and enables relations to be defined among different competencies. However, it is impractical to expect that the systems using CaSS will be always be aware of the frameworks referenced by other such systems and, even if they are aware, that they will be able to use the relations in computations. It is therefore a requirement that CaSS be able to apply relations among competencies to competency data.")]),e._v(" "),t("h3",{attrs:{id:"granularity-and-roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#granularity-and-roll-up-rules"}},[e._v("#")]),e._v(" Granularity and Roll-up Rules")]),e._v(" "),t("p",[e._v("The second requirement for sharing competency records stems from use cases in which the competency frameworks used by one system are at a completely different level of granularity than those used by another system. For example, intelligent tutoring systems such as "),t("a",{attrs:{href:"https://www.carnegielearning.com/learning-solutions/software/cognitive-tutor/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Carnegie Learning’s cognitive tutors"),t("OutboundLink")],1),e._v(" track highly granular “knowledge components,” competency-enabled learning management systems such as "),t("a",{attrs:{href:"https://download.moodle.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Moodle 3.1"),t("OutboundLink")],1),e._v(" assign competencies to activities and assessments, and systems used for staffing and career management are generally concerned with much less granular job and workforce skills. For a network such as that idealized in Figure 1 on the previous page to make sense, an intelligent tutoring system must be able to report data at the level of knowledge components while an applicant tracking system (ATS) consumes them at the level of job skills. The CaSS framework and competency services have the ability to store “roll-up rules” and relations that can be used to determine how knowledge about mastery of more granular competencies can be used as evidence of mastery of less granular competencies, but it is again unreasonable to expect that the ATS will know about the relevant relations and roll-up rules, much less know how to compute with them. Moreover, even if every collaborating system did retrieve and perform such computations, it is unlikely that they would do so in a consistent manner. It is therefore a requirement that CaSS be able to apply relations and roll-up rules to compute the state of a competency from the reported state of other related competencies, and that it do so in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("h3",{attrs:{id:"confidence-evidence-and-validity"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#confidence-evidence-and-validity"}},[e._v("#")]),e._v(" Confidence, Evidence, and Validity")]),e._v(" "),t("p",[e._v("The third requirement for sharing competency records comes from use cases in which:")]),e._v(" "),t("ul",[t("li",[e._v("Multiple systems report data about an individual’s competency, which could be conflicting")]),e._v(" "),t("li",[e._v("Users have a desire to know how much they can trust data in an individual’s profile")]),e._v(" "),t("li",[e._v("Users want to examine evidence of competency, not just statements about competency")]),e._v(" "),t("li",[e._v("Data is time limited, as often occurs with certifications or qualifications")])]),e._v(" "),t("p",[e._v("All of these scenarios commonly arise in discussions about competencies with designers of education and training systems and proponents of competency-based approaches. It is therefore a requirement that CaSS be able to collect and report evidence, time limitations, and information on the confidence of an assertion about a learner’s competency. It is also a requirement that CaSS be able to resolve conflicting data in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("p",[e._v("Another phenomenon that is frequently mentioned and that is supported by cognitive science as well as real-world experience is that skills and knowledge can deteriorate or be lost over time unless they are practiced or reinforced. Although it is hard to find existing systems that take this into account when maintaining competency records, in designing CaSS it was considered a requirement that CaSS be able to associate decay functions with reported competencies.")]),e._v(" "),t("h3",{attrs:{id:"assertions-rather-than-records"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertions-rather-than-records"}},[e._v("#")]),e._v(" Assertions Rather than Records")]),e._v(" "),t("p",[e._v("Assessments can vary wildly with regard to "),t("a",{attrs:{href:"http://www.hr-guide.com/data/G362.htm",target:"_blank",rel:"noopener noreferrer"}},[e._v("reliability and validity"),t("OutboundLink")],1),e._v(". In most cases, the reliability and validity of an assessment will not be known, and even in the case of assessments vetted by professional psychometricians, it is naive to treat assessment results as proving that an individual possesses a given competency. Moreover, claims of competency collected by CaSS may not even be based on an assessment, e.g. they could be derived from self-declarations or made under the assumption that a learner who has completed an activity has mastered the skills and knowledge addressed by that activity. For this reason, CaSS takes the generally accepted view that information about the competencies held by an individual consists of competency assertions. This is particularly important in "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/High-stakes_testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("high-stakes settings"),t("OutboundLink")],1),e._v(", where making an unsupported claim that CaSS maintains an authoritative record of competencies could have undesirable consequences.")]),e._v(" "),t("h3",{attrs:{id:"negative-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#negative-assertions"}},[e._v("#")]),e._v(" Negative Assertions")]),e._v(" "),t("p",[e._v("Although traditional academic transcripts can include records of failing grades, the most commonly held view of a “competency profile” is that it lists the competencies that an individual holds and does not address the ones that are not held. Assertions, however, can be made to the effect that a test was not passed or that an individual failed to demonstrate a competency. Both "),t("a",{attrs:{href:"https://adlnet.gov/projects/scorm/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SCORM"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://adlnet.gov/projects/xapi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("XAPI"),t("OutboundLink")],1),e._v(" reporting mechanisms allow for this, as do many evaluation systems. It is therefore a requirement that CaSS receive and make both positive and negative assertions about an individual’s competencies.")]),e._v(" "),t("p",[e._v("This requirement is not without controversy. The ability to report that someone has demonstrate a lack of competency puts privacy and policies concerning the control of competency data in a new light. It is therefore a requirement that CaSS be configurable to at least not make negative assertions, regardless of whether it has collected any. It is also a requirement that CaSS take negative assertions into account when resolving conflicting data.")]),e._v(" "),t("h3",{attrs:{id:"privacy-and-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#privacy-and-security"}},[e._v("#")]),e._v(" Privacy and Security")]),e._v(" "),t("p",[e._v("The final major set of requirements concern privacy and security. Data about the competencies held by an individual can be highly sensitive data. Some basic considerations are:")]),e._v(" "),t("ul",[t("li",[e._v("Many laws and regulations require that assessment data, grades, and other competency profile information be properly safeguarded and be divulged only on a need-to-know basis and for specific purposes.")]),e._v(" "),t("li",[e._v("CaSS may operate in environments where portions of a learner’s competency profile are classified and non-public while other portions are unclassified and should be made available for the benefit of the learner. An example is a military profile where some skills and abilities are not shared with civilian organizations but where learners want other skills and abilities to be certified for future civilian employment and career management purposes.")]),e._v(" "),t("li",[e._v("In some use cases the mere fact that an individual has been assessed on or attempted to acquire a competency may be considered sensitive information and protected by privacy policies, just as privacy policies "),t("a",{attrs:{href:"http://www.ala.org/advocacy/intfreedom/librarybill/interpretations/qa-privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("protect the confidentiality of a user’s selection of reading materials"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("In other use cases, information should be exchanged openly within a network of collaborating systems, and in still other use cases, data on learning outcomes and competencies must be made available to researchers without revealing the identity of the subjects (or any other PII).")])]),e._v(" "),t("p",[e._v("More information is in the "),t("a",{attrs:{href:"TODOTODOTODO"}},[e._v("CaSS Privacy Manual")]),e._v(". From an assertion processing perspective, it is a requirement that CaSS implement a robust and flexible security and privacy framework that supports a wide range of policies, use cases, and requirements.")]),e._v(" "),t("h2",{attrs:{id:"definitions-and-assumptions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-assumptions"}},[e._v("#")]),e._v(" Definitions and Assumptions")]),e._v(" "),t("p",[e._v("The remainder of this document comprises the technical specifications for assertion processing in CaSS.")]),e._v(" "),t("h3",{attrs:{id:"definitions-and-notation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-notation"}},[e._v("#")]),e._v(" Definitions and Notation")]),e._v(" "),t("p",[t("strong",[e._v("Assertion")])]),e._v(" "),t("blockquote",[t("p",[e._v("An object with the properties defined in the "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("Assertion schema"),t("OutboundLink")],1),e._v(". The general form of an assertion is:")]),e._v(" "),t("p",[t("strong",[e._v("Agent A")]),e._v(" asserts at "),t("strong",[e._v("time T")]),e._v(" with "),t("strong",[e._v("validity through time V")]),e._v(" and with "),t("strong",[e._v("confidence p")]),e._v(" that "),t("strong",[e._v("subject S")]),e._v(" holds or does not hold "),t("strong",[e._v("competency C")]),e._v(" at "),t("strong",[e._v("level L")]),e._v(" based on associated "),t("strong",[e._v("evidence E")])]),e._v(" "),t("ul",[t("li",[e._v("p is a number in the closed interval [0,1]")]),e._v(" "),t("li",[e._v("T and V are datetime objects")]),e._v(" "),t("li",[e._v("E is a link to associated evidence")]),e._v(" "),t("li",[e._v("C is identified via a URL that points to a CaSS competency")]),e._v(" "),t("li",[e._v("A, S are CaSS identities")]),e._v(" "),t("li",[e._v("p, E, L, T, and V are all optional.")])]),e._v(" "),t("p",[e._v("The object model also supports an optional decay function, which is not used in the current release of CaSS.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Processor")])]),e._v(" "),t("blockquote",[t("p",[e._v("A component of a CaSS service that answers queries from providers, collects the information needed to answer those queries, and applies an appropriate processing algorithm to compute the answers. It is assumed that an assertion processor can gather the information it requires and can formulate and transmit responses to queries using CaSS APIs.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Provider")])]),e._v(" "),t("blockquote",[t("p",[e._v("A software application that can provide assertions. In this document, we assume that an assertion processor maintains a list of trusted assertion providers, which are referred to as the providers.")])]),e._v(" "),t("p",[t("strong",[e._v("Identities")])]),e._v(" "),t("blockquote",[t("p",[e._v("The public key portion of a CaSS identity. They securely and uniquely identify people, organizations, or software applications (see the "),t("RouterLink",{attrs:{to:"/guide/overview/#cass-security-framework"}},[e._v("CaSS Security Framework")]),e._v("). An individual can have multiple identities in CaSS.")],1)]),e._v(" "),t("p",[t("strong",[e._v("Processing Algorithm")])]),e._v(" "),t("blockquote",[t("p",[e._v("An algorithm that (potentially) considers relations, roll-up rules, and data from collected assertions to determine whether or not an identity holds a given competency and (potentially) associates a confidence, evidence, and other data from the assertion information model with that determination.")])]),e._v(" "),t("p",[t("strong",[e._v("Roll-up Rule")])]),e._v(" "),t("blockquote",[t("p",[e._v("A rule that defines a computation that produces a mastery estimate for a given competency based on mastery estimates for other competencies, see the "),t("a",{attrs:{href:"http://schema.cassproject.org/#RollupRule",target:"_blank",rel:"noopener noreferrer"}},[e._v("Roll-up Rule schema"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("strong",[e._v("Root Competency")])]),e._v(" "),t("blockquote",[t("p",[e._v("When an assertion processor is queried about a competency, that competency becomes the root competency. The processor may use information about other competencies as well.")])]),e._v(" "),t("h3",{attrs:{id:"supported-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-relations"}},[e._v("#")]),e._v(" Supported Relations")]),e._v(" "),t("p",[e._v("The following (and only the following) relations are currently supported by CaSS assertion processors:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Broadens/Narrows")]),e._v(" - B narrows A if B is more specific than A. Broadens and narrows are inverse relationships, i.e. A broadens B and is more general than B if and only if B narrows A and is more specific than A.")]),e._v(" "),t("li",[t("strong",[e._v("Requires")]),e._v(" - A requires B if A cannot be held without holding B. This is stronger than A broadens B in some models. The inverse is IsRequiredBy.")]),e._v(" "),t("li",[t("strong",[e._v("Equivalent")]),e._v(" - A is equivalent to B if they can be treated as the same competency for the purpose of mastery. Note that if A and B are in different frameworks, it is possible that A is equivalent to B in A’s framework (e.g. the State of Oregon considers Utah’s competency as equivalent) but not in B’s framework (the state of Utah does not consider Oregon’s competency to be equivalent.).")])]),e._v(" "),t("h2",{attrs:{id:"assertion-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-api"}},[e._v("#")]),e._v(" Assertion API")]),e._v(" "),t("p",[e._v("External systems query CaSS for information about an individual’s competency via the "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/AssertionProcessor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("following API"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("h3",{attrs:{id:"query-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#query-api"}},[e._v("#")]),e._v(" Query API")]),e._v(" "),t("div",{staticClass:"language-js extra-class"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function-variable function"}},[e._v("has")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("function")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token parameter"}},[e._v("subject"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" competency"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" level"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" context"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" additionalSignatures"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" success"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" ask"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" failure")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),t("ul",[t("li",[t("code",[e._v("subject")]),e._v(" - One or more identities that belong to an individual. (required).")]),e._v(" "),t("li",[t("code",[e._v("competency")]),e._v(" - The queried competency. (required)")]),e._v(" "),t("li",[t("code",[e._v("level")]),e._v(" - The queried level of the competency. (optional)")]),e._v(" "),t("li",[t("code",[e._v("context")]),e._v(" - The framework in which the competency is to be interpreted. (required)")]),e._v(" "),t("li",[t("code",[e._v("additionalSignatures")]),e._v(" - Additional, time limited, authorizations that can be granted for a single query. (Not currently used.)")]),e._v(" "),t("li",[t("code",[e._v("success")]),e._v(" - Callback method to retrieve the answer to a query when the query has been successfully processed.")]),e._v(" "),t("li",[t("code",[e._v("ask")]),e._v(" - If an assertion processor requires additional information, the “ask” parameter defines the method that the assertion processor should invoke to get this information. (optional)")]),e._v(" "),t("li",[t("code",[e._v("failure")]),e._v(" - The method to call if assertion processing fails.")])]),e._v(" "),t("h3",{attrs:{id:"storing-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#storing-assertions"}},[e._v("#")]),e._v(" Storing Assertions")]),e._v(" "),t("p",[e._v("External systems store assertions "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" in the CaSS repository using the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/"}},[e._v("CaSS Repository API")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"current-assertion-processing-algorithm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-assertion-processing-algorithm"}},[e._v("#")]),e._v(" Current Assertion Processing Algorithm")]),e._v(" "),t("h3",{attrs:{id:"step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[e._v("#")]),e._v(" STEP 1")]),e._v(" "),t("p",[e._v("The first step is to create a processing graph G for the root competency. CaSS does this by starting with the root node R and retrieving all relations to other competencies. Each such relation defines an edge in the graph with nodes representing the two related competencies. If the same competency appears in two relations, it is represented twice by two different nodes. The edges are labelled with the relations (i.e. A requires B, A isRequiredBy B, A broadens B, A narrows B, or A is equivalent to B). This process is then repeated for each node in the graph, adding any relations that have not previously been retrieved and is iterated until no more relations can be found.")]),e._v(" "),t("p",[e._v("The result is a tree G with root R.")]),e._v(" "),t("h3",{attrs:{id:"step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[e._v("#")]),e._v(" STEP 2")]),e._v(" "),t("p",[e._v("The next steps involve determining the values of the nodes. In this scheme, a node (representing a competency) can have four values:")]),e._v(" "),t("ul",[t("li",[e._v("T means that the competency is held")]),e._v(" "),t("li",[e._v("F means that the competency is not held")]),e._v(" "),t("li",[e._v("I means that the mastery status of the competency is indeterminate")]),e._v(" "),t("li",[e._v("U means that the mastery status of the competency is unknown")])]),e._v(" "),t("p",[e._v("The second step of the algorithm is to initialize all nodes with "),t("strong",[e._v("U")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"step-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[e._v("#")]),e._v(" STEP 3")]),e._v(" "),t("p",[e._v("The algorithm retrieves all assertions for the leaves of G.")]),e._v(" "),t("p",[e._v("In this algorithm, all assertions are treated as T (the competency is held) or F (the competency is not held).")]),e._v(" "),t("p",[e._v("All roll-up roles for the leaf nodes are also computed using assertions retrieved for all target competencies in the roll-up rule. Each roll-up rule is considered to be an assertion, but have the values I or U in addition to T or F.")]),e._v(" "),t("p",[e._v("The value of a node is set to:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("U")]),e._v(" if all assertions are U or no assertions exist")]),e._v(" "),t("li",[t("strong",[e._v("T")]),e._v(" if all assertions about that node are T or U")]),e._v(" "),t("li",[t("strong",[e._v("F")]),e._v(" if all assertions about that node are F or U")]),e._v(" "),t("li",[t("strong",[e._v("I")]),e._v(" otherwise")])]),e._v(" "),t("h3",{attrs:{id:"step-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[e._v("#")]),e._v(" STEP 4")]),e._v(" "),t("p",[e._v("The next step is to examine all parents of leaf nodes. In doing so, the values of each child of a node are considered assertions in the following way, where:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("P")]),e._v(" is the parent node")]),e._v(" "),t("li",[t("strong",[e._v("C")]),e._v(" is the child node")])]),e._v(" "),t("p",[e._v("Rules:")]),e._v(" "),t("ul",[t("li",[e._v("If P broadens C, and C = F, then P is asserted to be F (holding P implies holding C)")]),e._v(" "),t("li",[e._v("If P narrows C, and C = T, then P is asserted to be T (holding C implies holding P)")]),e._v(" "),t("li",[e._v("If P requires C, and C = F, then P is asserted to be F")]),e._v(" "),t("li",[e._v("If P is required by C, and C = T, then P is asserted to be T")]),e._v(" "),t("li",[e._v("If P is equivalent to C, the value of C is asserted for P (T, F or I)")])]),e._v(" "),t("p",[e._v("The values of all the parent nodes P are computed as in STEP 3 using direct assertions about the parent nodes, the assertions derived from all child nodes as above, and all roll-up rules. Equivalently, the leaf nodes are deleted, the assertions derived from them are retained, and STEP 3 is repeated.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("When a roll-up rule is applied to a node A, they only use direct assertions about the competencies in the rule. Roll-up rules can produce indeterminate or unknown results when data about the competencies in the rule are missing or conflicting. This behavior is determined by the definition of the rule.")])]),e._v(" "),t("h3",{attrs:{id:"step-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[e._v("#")]),e._v(" STEP 5")]),e._v(" "),t("p",[e._v("STEP 4 is repeated until the root node R is reached. The processing algorithm then returns the value of R.")]),e._v(" "),t("h3",{attrs:{id:"the-profile-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-profile-api"}},[e._v("#")]),e._v(" The Profile API")]),e._v(" "),t("p",[e._v("In addition to the Query API, CaSS implements a profile web service API that can be used to retrieve the type of learner profile depicted in Figure 1. This API is used by an external system to:")]),e._v(" "),t("ul",[t("li",[e._v("Determine whether an individual represented by a user ID holds a given competency. The API will return T if the answer is “"),t("em",[e._v("yes")]),e._v("” (as determined by the assertion processor) and F otherwise.")]),e._v(" "),t("li",[e._v("Retrieve a list of all competencies in a given framework held by an individual represented by a user ID.")]),e._v(" "),t("li",[e._v("Set the value of a competency. When this is done, all previous values are overwritten.")])]),e._v(" "),t("p",[e._v("This API can be invoked with processing turned on or off. When turned on, the assertion processor functions normally. When turned off, the value of a competency is determined only by the latests assertion made about that competency by an external system.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This Profile API was developed to implement the classic notion of a profile that collaborating systems in a closed network can use to read and write the mastery stati of the a shared set of competencies. It purposely circumvents the CaSS security framework.")])]),e._v(" "),t("h3",{attrs:{id:"roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roll-up-rules"}},[e._v("#")]),e._v(" Roll-up Rules")]),e._v(" "),t("p",[e._v("Roll-up rules in CaSS can currently be defined as nested "),t("strong",[e._v("AND")]),e._v("'s and "),t("strong",[e._v("OR")]),e._v("'s of a set of competencies. These are evaluated based on assertions about these competencies in the manner described in STEP 3 with the addition that a confidence threshold can be included. The syntax is shown in the following example:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("(\n [competency:A AND confidence:>0.6] AND\n [competency:B AND confidence:>0.6]\n) OR\n[competency:C AND confidence:>0.9] OR\n(\n [competency:D] AND [competency:C]\n)\n")])])]),t("p",[e._v("Where A, B, C, and D are URLs to competencies managed by CaSS.")]),e._v(" "),t("h2",{attrs:{id:"expected-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-changes"}},[e._v("#")]),e._v(" Expected Changes")]),e._v(" "),t("p",[e._v("The following changes and modifications are anticipated for future releases:")]),e._v(" "),t("ul",[t("li",[e._v("An assertion processor can keep a table of reputations that indicates how much it can rely on responses from each provider. A reputation is a number in the closed interval [0,1] with 0 meaning that the assertions from the provider are unreliable and 1 meaning the provider’s assertions are completely reliable. Best practices for determining or interpreting the value of a reputation are to be determined.")]),e._v(" "),t("li",[e._v("Future implementations may include reputations for agents as well.")]),e._v(" "),t("li",[e._v("Instead of creating duplicate nodes to create a tree, the processing graph will start out as a directed graph (A → B if A broadens or requires B) and cycles will be collapsed into equivalence classes represented by a single node. In this setup, each competency will be represented only once in the graph.")]),e._v(" "),t("li",[e._v("The value of each node will be a real number in the closed interval [-1,1]. Negative numbers indicate the belief that an identity does not hold a competency. The value derived from an assertion will be the product of the confidence and ±1 (-1 for a negative assertion and +1 for a positive assertion), which may additionally be adjusted based on reputation.")]),e._v(" "),t("li",[e._v("The graph will be processed depth first using a formula that weighs multiple assertions to derive a value.")]),e._v(" "),t("li",[e._v("The associated API will be configurable to convert values of the root node to scales such as 1 - 4 or a discrete grading system. This mimics computations such as “grade point average” and is compatible with the way that certain learning management systems view competency assertions.")]),e._v(" "),t("li",[e._v("We anticipate support for more sophisticated roll-up rules that can, for example, require that the sum of the confidences of multiple assertions exceed some threshold.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{634:function(e,t,a){e.exports=a.p+"assets/img/centralized-competency-profile.7c3bc92c.png"},717:function(e,t,a){"use strict";a.r(t);var s=a(69),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"assertion-processing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processing"}},[e._v("#")]),e._v(" Assertion Processing")]),e._v(" "),t("p",[t("em",[e._v("Last updated 2018-12-13")])]),e._v(" "),t("h2",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("This page describes:")]),e._v(" "),t("ul",[t("li",[e._v("How Assertions (claims of competency made on behalf of an “entity”) are stored in CaSS")]),e._v(" "),t("li",[e._v("How third-party applications query CaSS to determine competencies held by an entity")]),e._v(" "),t("li",[e._v("How CaSS responds to such queries")]),e._v(" "),t("li",[e._v("How CaSS can be used as a more traditional “profile manager.”")]),e._v(" "),t("li",[e._v("How CaSS implements the ADL Total Learning Architecture “profile API.”")])]),e._v(" "),t("p",[e._v("This page describes the procedure CaSS currently uses to answer a query about a person’s competency and the procedure that is proposed for future releases. The form of the query is “Does subject hold competency C?”")]),e._v(" "),t("ul",[t("li",[e._v("The subject is the person whose competence is being queried")]),e._v(" "),t("li",[e._v("The competency C being queried is called the root competency")])]),e._v(" "),t("p",[e._v("This page only describes the algorithms, and does not address security, privacy, or the interaction of the assertion processing and query/response mechanisms with external systems.")]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("CaSS is designed to collect and provide information about a learner’s or employee’s competencies and skills to systems used in education, training, talent management, and workforce development. The simplest way to conceptualize the role of CaSS is as a “profile service” that collects, maintains, and publishes a list of the competencies that a learner or employee or job applicant has mastered (Figure 1). CaSS can operate in this mode, but this conceptualization fails to recognize the many real-world complexities and requirements surrounding the collection and determination of competencies. This section briefly discusses these as informative background.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(634),alt:"Image"}})]),e._v(" "),t("h3",{attrs:{id:"competency-articulation-via-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#competency-articulation-via-relations"}},[e._v("#")]),e._v(" Competency Articulation via Relations")]),e._v(" "),t("p",[e._v("The first (and most obvious) requirement for sharing competency records among multiple systems is that they reference the same competencies or, barring that, have the ability to articulate different sets of competencies that address related skills, knowledge, and ability. The CaSS framework and competency services enable systems to reference common sets of competencies and enables relations to be defined among different competencies. However, it is impractical to expect that the systems using CaSS will be always be aware of the frameworks referenced by other such systems and, even if they are aware, that they will be able to use the relations in computations. It is therefore a requirement that CaSS be able to apply relations among competencies to competency data.")]),e._v(" "),t("h3",{attrs:{id:"granularity-and-roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#granularity-and-roll-up-rules"}},[e._v("#")]),e._v(" Granularity and Roll-up Rules")]),e._v(" "),t("p",[e._v("The second requirement for sharing competency records stems from use cases in which the competency frameworks used by one system are at a completely different level of granularity than those used by another system. For example, intelligent tutoring systems such as "),t("a",{attrs:{href:"https://www.carnegielearning.com/learning-solutions/software/cognitive-tutor/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Carnegie Learning’s cognitive tutors"),t("OutboundLink")],1),e._v(" track highly granular “knowledge components,” competency-enabled learning management systems such as "),t("a",{attrs:{href:"https://download.moodle.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Moodle 3.1"),t("OutboundLink")],1),e._v(" assign competencies to activities and assessments, and systems used for staffing and career management are generally concerned with much less granular job and workforce skills. For a network such as that idealized in Figure 1 on the previous page to make sense, an intelligent tutoring system must be able to report data at the level of knowledge components while an applicant tracking system (ATS) consumes them at the level of job skills. The CaSS framework and competency services have the ability to store “roll-up rules” and relations that can be used to determine how knowledge about mastery of more granular competencies can be used as evidence of mastery of less granular competencies, but it is again unreasonable to expect that the ATS will know about the relevant relations and roll-up rules, much less know how to compute with them. Moreover, even if every collaborating system did retrieve and perform such computations, it is unlikely that they would do so in a consistent manner. It is therefore a requirement that CaSS be able to apply relations and roll-up rules to compute the state of a competency from the reported state of other related competencies, and that it do so in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("h3",{attrs:{id:"confidence-evidence-and-validity"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#confidence-evidence-and-validity"}},[e._v("#")]),e._v(" Confidence, Evidence, and Validity")]),e._v(" "),t("p",[e._v("The third requirement for sharing competency records comes from use cases in which:")]),e._v(" "),t("ul",[t("li",[e._v("Multiple systems report data about an individual’s competency, which could be conflicting")]),e._v(" "),t("li",[e._v("Users have a desire to know how much they can trust data in an individual’s profile")]),e._v(" "),t("li",[e._v("Users want to examine evidence of competency, not just statements about competency")]),e._v(" "),t("li",[e._v("Data is time limited, as often occurs with certifications or qualifications")])]),e._v(" "),t("p",[e._v("All of these scenarios commonly arise in discussions about competencies with designers of education and training systems and proponents of competency-based approaches. It is therefore a requirement that CaSS be able to collect and report evidence, time limitations, and information on the confidence of an assertion about a learner’s competency. It is also a requirement that CaSS be able to resolve conflicting data in a documented, consistent, and potentially configurable manner.")]),e._v(" "),t("p",[e._v("Another phenomenon that is frequently mentioned and that is supported by cognitive science as well as real-world experience is that skills and knowledge can deteriorate or be lost over time unless they are practiced or reinforced. Although it is hard to find existing systems that take this into account when maintaining competency records, in designing CaSS it was considered a requirement that CaSS be able to associate decay functions with reported competencies.")]),e._v(" "),t("h3",{attrs:{id:"assertions-rather-than-records"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertions-rather-than-records"}},[e._v("#")]),e._v(" Assertions Rather than Records")]),e._v(" "),t("p",[e._v("Assessments can vary wildly with regard to "),t("a",{attrs:{href:"http://www.hr-guide.com/data/G362.htm",target:"_blank",rel:"noopener noreferrer"}},[e._v("reliability and validity"),t("OutboundLink")],1),e._v(". In most cases, the reliability and validity of an assessment will not be known, and even in the case of assessments vetted by professional psychometricians, it is naive to treat assessment results as proving that an individual possesses a given competency. Moreover, claims of competency collected by CaSS may not even be based on an assessment, e.g. they could be derived from self-declarations or made under the assumption that a learner who has completed an activity has mastered the skills and knowledge addressed by that activity. For this reason, CaSS takes the generally accepted view that information about the competencies held by an individual consists of competency assertions. This is particularly important in "),t("a",{attrs:{href:"https://en.wikipedia.org/wiki/High-stakes_testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("high-stakes settings"),t("OutboundLink")],1),e._v(", where making an unsupported claim that CaSS maintains an authoritative record of competencies could have undesirable consequences.")]),e._v(" "),t("h3",{attrs:{id:"negative-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#negative-assertions"}},[e._v("#")]),e._v(" Negative Assertions")]),e._v(" "),t("p",[e._v("Although traditional academic transcripts can include records of failing grades, the most commonly held view of a “competency profile” is that it lists the competencies that an individual holds and does not address the ones that are not held. Assertions, however, can be made to the effect that a test was not passed or that an individual failed to demonstrate a competency. Both "),t("a",{attrs:{href:"https://adlnet.gov/projects/scorm/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SCORM"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://adlnet.gov/projects/xapi/",target:"_blank",rel:"noopener noreferrer"}},[e._v("XAPI"),t("OutboundLink")],1),e._v(" reporting mechanisms allow for this, as do many evaluation systems. It is therefore a requirement that CaSS receive and make both positive and negative assertions about an individual’s competencies.")]),e._v(" "),t("p",[e._v("This requirement is not without controversy. The ability to report that someone has demonstrate a lack of competency puts privacy and policies concerning the control of competency data in a new light. It is therefore a requirement that CaSS be configurable to at least not make negative assertions, regardless of whether it has collected any. It is also a requirement that CaSS take negative assertions into account when resolving conflicting data.")]),e._v(" "),t("h3",{attrs:{id:"privacy-and-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#privacy-and-security"}},[e._v("#")]),e._v(" Privacy and Security")]),e._v(" "),t("p",[e._v("The final major set of requirements concern privacy and security. Data about the competencies held by an individual can be highly sensitive data. Some basic considerations are:")]),e._v(" "),t("ul",[t("li",[e._v("Many laws and regulations require that assessment data, grades, and other competency profile information be properly safeguarded and be divulged only on a need-to-know basis and for specific purposes.")]),e._v(" "),t("li",[e._v("CaSS may operate in environments where portions of a learner’s competency profile are classified and non-public while other portions are unclassified and should be made available for the benefit of the learner. An example is a military profile where some skills and abilities are not shared with civilian organizations but where learners want other skills and abilities to be certified for future civilian employment and career management purposes.")]),e._v(" "),t("li",[e._v("In some use cases the mere fact that an individual has been assessed on or attempted to acquire a competency may be considered sensitive information and protected by privacy policies, just as privacy policies "),t("a",{attrs:{href:"http://www.ala.org/advocacy/intfreedom/librarybill/interpretations/qa-privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("protect the confidentiality of a user’s selection of reading materials"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("In other use cases, information should be exchanged openly within a network of collaborating systems, and in still other use cases, data on learning outcomes and competencies must be made available to researchers without revealing the identity of the subjects (or any other PII).")])]),e._v(" "),t("p",[e._v("More information is in the "),t("a",{attrs:{href:"TODOTODOTODO"}},[e._v("CaSS Privacy Manual")]),e._v(". From an assertion processing perspective, it is a requirement that CaSS implement a robust and flexible security and privacy framework that supports a wide range of policies, use cases, and requirements.")]),e._v(" "),t("h2",{attrs:{id:"definitions-and-assumptions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-assumptions"}},[e._v("#")]),e._v(" Definitions and Assumptions")]),e._v(" "),t("p",[e._v("The remainder of this document comprises the technical specifications for assertion processing in CaSS.")]),e._v(" "),t("h3",{attrs:{id:"definitions-and-notation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions-and-notation"}},[e._v("#")]),e._v(" Definitions and Notation")]),e._v(" "),t("p",[t("strong",[e._v("Assertion")])]),e._v(" "),t("blockquote",[t("p",[e._v("An object with the properties defined in the "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("Assertion schema"),t("OutboundLink")],1),e._v(". The general form of an assertion is:")]),e._v(" "),t("p",[t("strong",[e._v("Agent A")]),e._v(" asserts at "),t("strong",[e._v("time T")]),e._v(" with "),t("strong",[e._v("validity through time V")]),e._v(" and with "),t("strong",[e._v("confidence p")]),e._v(" that "),t("strong",[e._v("subject S")]),e._v(" holds or does not hold "),t("strong",[e._v("competency C")]),e._v(" at "),t("strong",[e._v("level L")]),e._v(" based on associated "),t("strong",[e._v("evidence E")])]),e._v(" "),t("ul",[t("li",[e._v("p is a number in the closed interval [0,1]")]),e._v(" "),t("li",[e._v("T and V are datetime objects")]),e._v(" "),t("li",[e._v("E is a link to associated evidence")]),e._v(" "),t("li",[e._v("C is identified via a URL that points to a CaSS competency")]),e._v(" "),t("li",[e._v("A, S are CaSS identities")]),e._v(" "),t("li",[e._v("p, E, L, T, and V are all optional.")])]),e._v(" "),t("p",[e._v("The object model also supports an optional decay function, which is not used in the current release of CaSS.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Processor")])]),e._v(" "),t("blockquote",[t("p",[e._v("A component of a CaSS service that answers queries from providers, collects the information needed to answer those queries, and applies an appropriate processing algorithm to compute the answers. It is assumed that an assertion processor can gather the information it requires and can formulate and transmit responses to queries using CaSS APIs.")])]),e._v(" "),t("p",[t("strong",[e._v("Assertion Provider")])]),e._v(" "),t("blockquote",[t("p",[e._v("A software application that can provide assertions. In this document, we assume that an assertion processor maintains a list of trusted assertion providers, which are referred to as the providers.")])]),e._v(" "),t("p",[t("strong",[e._v("Identities")])]),e._v(" "),t("blockquote",[t("p",[e._v("The public key portion of a CaSS identity. They securely and uniquely identify people, organizations, or software applications (see the "),t("RouterLink",{attrs:{to:"/guide/overview/#cass-security-framework"}},[e._v("CaSS Security Framework")]),e._v("). An individual can have multiple identities in CaSS.")],1)]),e._v(" "),t("p",[t("strong",[e._v("Processing Algorithm")])]),e._v(" "),t("blockquote",[t("p",[e._v("An algorithm that (potentially) considers relations, roll-up rules, and data from collected assertions to determine whether or not an identity holds a given competency and (potentially) associates a confidence, evidence, and other data from the assertion information model with that determination.")])]),e._v(" "),t("p",[t("strong",[e._v("Roll-up Rule")])]),e._v(" "),t("blockquote",[t("p",[e._v("A rule that defines a computation that produces a mastery estimate for a given competency based on mastery estimates for other competencies, see the "),t("a",{attrs:{href:"http://schema.cassproject.org/#RollupRule",target:"_blank",rel:"noopener noreferrer"}},[e._v("Roll-up Rule schema"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("strong",[e._v("Root Competency")])]),e._v(" "),t("blockquote",[t("p",[e._v("When an assertion processor is queried about a competency, that competency becomes the root competency. The processor may use information about other competencies as well.")])]),e._v(" "),t("h3",{attrs:{id:"supported-relations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-relations"}},[e._v("#")]),e._v(" Supported Relations")]),e._v(" "),t("p",[e._v("The following (and only the following) relations are currently supported by CaSS assertion processors:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Broadens/Narrows")]),e._v(" - B narrows A if B is more specific than A. Broadens and narrows are inverse relationships, i.e. A broadens B and is more general than B if and only if B narrows A and is more specific than A.")]),e._v(" "),t("li",[t("strong",[e._v("Requires")]),e._v(" - A requires B if A cannot be held without holding B. This is stronger than A broadens B in some models. The inverse is IsRequiredBy.")]),e._v(" "),t("li",[t("strong",[e._v("Equivalent")]),e._v(" - A is equivalent to B if they can be treated as the same competency for the purpose of mastery. Note that if A and B are in different frameworks, it is possible that A is equivalent to B in A’s framework (e.g. the State of Oregon considers Utah’s competency as equivalent) but not in B’s framework (the state of Utah does not consider Oregon’s competency to be equivalent.).")])]),e._v(" "),t("h2",{attrs:{id:"assertion-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#assertion-api"}},[e._v("#")]),e._v(" Assertion API")]),e._v(" "),t("p",[e._v("External systems query CaSS for information about an individual’s competency via the "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/AssertionProcessor.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("following API"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("h3",{attrs:{id:"query-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#query-api"}},[e._v("#")]),e._v(" Query API")]),e._v(" "),t("div",{staticClass:"language-js extra-class"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function-variable function"}},[e._v("has")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("function")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),t("span",{pre:!0,attrs:{class:"token parameter"}},[e._v("subject"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" competency"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" level"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" context"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" additionalSignatures"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" success"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" ask"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" failure")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),t("ul",[t("li",[t("code",[e._v("subject")]),e._v(" - One or more identities that belong to an individual. (required).")]),e._v(" "),t("li",[t("code",[e._v("competency")]),e._v(" - The queried competency. (required)")]),e._v(" "),t("li",[t("code",[e._v("level")]),e._v(" - The queried level of the competency. (optional)")]),e._v(" "),t("li",[t("code",[e._v("context")]),e._v(" - The framework in which the competency is to be interpreted. (required)")]),e._v(" "),t("li",[t("code",[e._v("additionalSignatures")]),e._v(" - Additional, time limited, authorizations that can be granted for a single query. (Not currently used.)")]),e._v(" "),t("li",[t("code",[e._v("success")]),e._v(" - Callback method to retrieve the answer to a query when the query has been successfully processed.")]),e._v(" "),t("li",[t("code",[e._v("ask")]),e._v(" - If an assertion processor requires additional information, the “ask” parameter defines the method that the assertion processor should invoke to get this information. (optional)")]),e._v(" "),t("li",[t("code",[e._v("failure")]),e._v(" - The method to call if assertion processing fails.")])]),e._v(" "),t("h3",{attrs:{id:"storing-assertions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#storing-assertions"}},[e._v("#")]),e._v(" Storing Assertions")]),e._v(" "),t("p",[e._v("External systems store assertions "),t("a",{attrs:{href:"http://schema.cassproject.org/#Assertion",target:"_blank",rel:"noopener noreferrer"}},[e._v("[schema]"),t("OutboundLink")],1),e._v(" in the CaSS repository using the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/"}},[e._v("CaSS Repository API")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"current-assertion-processing-algorithm"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#current-assertion-processing-algorithm"}},[e._v("#")]),e._v(" Current Assertion Processing Algorithm")]),e._v(" "),t("h3",{attrs:{id:"step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[e._v("#")]),e._v(" STEP 1")]),e._v(" "),t("p",[e._v("The first step is to create a processing graph G for the root competency. CaSS does this by starting with the root node R and retrieving all relations to other competencies. Each such relation defines an edge in the graph with nodes representing the two related competencies. If the same competency appears in two relations, it is represented twice by two different nodes. The edges are labelled with the relations (i.e. A requires B, A isRequiredBy B, A broadens B, A narrows B, or A is equivalent to B). This process is then repeated for each node in the graph, adding any relations that have not previously been retrieved and is iterated until no more relations can be found.")]),e._v(" "),t("p",[e._v("The result is a tree G with root R.")]),e._v(" "),t("h3",{attrs:{id:"step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[e._v("#")]),e._v(" STEP 2")]),e._v(" "),t("p",[e._v("The next steps involve determining the values of the nodes. In this scheme, a node (representing a competency) can have four values:")]),e._v(" "),t("ul",[t("li",[e._v("T means that the competency is held")]),e._v(" "),t("li",[e._v("F means that the competency is not held")]),e._v(" "),t("li",[e._v("I means that the mastery status of the competency is indeterminate")]),e._v(" "),t("li",[e._v("U means that the mastery status of the competency is unknown")])]),e._v(" "),t("p",[e._v("The second step of the algorithm is to initialize all nodes with "),t("strong",[e._v("U")]),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"step-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[e._v("#")]),e._v(" STEP 3")]),e._v(" "),t("p",[e._v("The algorithm retrieves all assertions for the leaves of G.")]),e._v(" "),t("p",[e._v("In this algorithm, all assertions are treated as T (the competency is held) or F (the competency is not held).")]),e._v(" "),t("p",[e._v("All roll-up roles for the leaf nodes are also computed using assertions retrieved for all target competencies in the roll-up rule. Each roll-up rule is considered to be an assertion, but have the values I or U in addition to T or F.")]),e._v(" "),t("p",[e._v("The value of a node is set to:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("U")]),e._v(" if all assertions are U or no assertions exist")]),e._v(" "),t("li",[t("strong",[e._v("T")]),e._v(" if all assertions about that node are T or U")]),e._v(" "),t("li",[t("strong",[e._v("F")]),e._v(" if all assertions about that node are F or U")]),e._v(" "),t("li",[t("strong",[e._v("I")]),e._v(" otherwise")])]),e._v(" "),t("h3",{attrs:{id:"step-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[e._v("#")]),e._v(" STEP 4")]),e._v(" "),t("p",[e._v("The next step is to examine all parents of leaf nodes. In doing so, the values of each child of a node are considered assertions in the following way, where:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("P")]),e._v(" is the parent node")]),e._v(" "),t("li",[t("strong",[e._v("C")]),e._v(" is the child node")])]),e._v(" "),t("p",[e._v("Rules:")]),e._v(" "),t("ul",[t("li",[e._v("If P broadens C, and C = F, then P is asserted to be F (holding P implies holding C)")]),e._v(" "),t("li",[e._v("If P narrows C, and C = T, then P is asserted to be T (holding C implies holding P)")]),e._v(" "),t("li",[e._v("If P requires C, and C = F, then P is asserted to be F")]),e._v(" "),t("li",[e._v("If P is required by C, and C = T, then P is asserted to be T")]),e._v(" "),t("li",[e._v("If P is equivalent to C, the value of C is asserted for P (T, F or I)")])]),e._v(" "),t("p",[e._v("The values of all the parent nodes P are computed as in STEP 3 using direct assertions about the parent nodes, the assertions derived from all child nodes as above, and all roll-up rules. Equivalently, the leaf nodes are deleted, the assertions derived from them are retained, and STEP 3 is repeated.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Note")]),e._v(" "),t("p",[e._v("When a roll-up rule is applied to a node A, they only use direct assertions about the competencies in the rule. Roll-up rules can produce indeterminate or unknown results when data about the competencies in the rule are missing or conflicting. This behavior is determined by the definition of the rule.")])]),e._v(" "),t("h3",{attrs:{id:"step-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[e._v("#")]),e._v(" STEP 5")]),e._v(" "),t("p",[e._v("STEP 4 is repeated until the root node R is reached. The processing algorithm then returns the value of R.")]),e._v(" "),t("h3",{attrs:{id:"the-profile-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-profile-api"}},[e._v("#")]),e._v(" The Profile API")]),e._v(" "),t("p",[e._v("In addition to the Query API, CaSS implements a profile web service API that can be used to retrieve the type of learner profile depicted in Figure 1. This API is used by an external system to:")]),e._v(" "),t("ul",[t("li",[e._v("Determine whether an individual represented by a user ID holds a given competency. The API will return T if the answer is “"),t("em",[e._v("yes")]),e._v("” (as determined by the assertion processor) and F otherwise.")]),e._v(" "),t("li",[e._v("Retrieve a list of all competencies in a given framework held by an individual represented by a user ID.")]),e._v(" "),t("li",[e._v("Set the value of a competency. When this is done, all previous values are overwritten.")])]),e._v(" "),t("p",[e._v("This API can be invoked with processing turned on or off. When turned on, the assertion processor functions normally. When turned off, the value of a competency is determined only by the latests assertion made about that competency by an external system.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("This Profile API was developed to implement the classic notion of a profile that collaborating systems in a closed network can use to read and write the mastery stati of the a shared set of competencies. It purposely circumvents the CaSS security framework.")])]),e._v(" "),t("h3",{attrs:{id:"roll-up-rules"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#roll-up-rules"}},[e._v("#")]),e._v(" Roll-up Rules")]),e._v(" "),t("p",[e._v("Roll-up rules in CaSS can currently be defined as nested "),t("strong",[e._v("AND")]),e._v("'s and "),t("strong",[e._v("OR")]),e._v("'s of a set of competencies. These are evaluated based on assertions about these competencies in the manner described in STEP 3 with the addition that a confidence threshold can be included. The syntax is shown in the following example:")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("(\n [competency:A AND confidence:>0.6] AND\n [competency:B AND confidence:>0.6]\n) OR\n[competency:C AND confidence:>0.9] OR\n(\n [competency:D] AND [competency:C]\n)\n")])])]),t("p",[e._v("Where A, B, C, and D are URLs to competencies managed by CaSS.")]),e._v(" "),t("h2",{attrs:{id:"expected-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#expected-changes"}},[e._v("#")]),e._v(" Expected Changes")]),e._v(" "),t("p",[e._v("The following changes and modifications are anticipated for future releases:")]),e._v(" "),t("ul",[t("li",[e._v("An assertion processor can keep a table of reputations that indicates how much it can rely on responses from each provider. A reputation is a number in the closed interval [0,1] with 0 meaning that the assertions from the provider are unreliable and 1 meaning the provider’s assertions are completely reliable. Best practices for determining or interpreting the value of a reputation are to be determined.")]),e._v(" "),t("li",[e._v("Future implementations may include reputations for agents as well.")]),e._v(" "),t("li",[e._v("Instead of creating duplicate nodes to create a tree, the processing graph will start out as a directed graph (A → B if A broadens or requires B) and cycles will be collapsed into equivalence classes represented by a single node. In this setup, each competency will be represented only once in the graph.")]),e._v(" "),t("li",[e._v("The value of each node will be a real number in the closed interval [-1,1]. Negative numbers indicate the belief that an identity does not hold a competency. The value derived from an assertion will be the product of the confidence and ±1 (-1 for a negative assertion and +1 for a positive assertion), which may additionally be adjusted based on reputation.")]),e._v(" "),t("li",[e._v("The graph will be processed depth first using a formula that weighs multiple assertions to derive a value.")]),e._v(" "),t("li",[e._v("The associated API will be configurable to convert values of the root node to scales such as 1 - 4 or a discrete grading system. This mimics computations such as “grade point average” and is compatible with the way that certain learning management systems view competency assertions.")]),e._v(" "),t("li",[e._v("We anticipate support for more sophisticated roll-up rules that can, for example, require that the sum of the confidences of multiple assertions exceed some threshold.")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/41.93f87c9e.js.gz b/docs/assets/js/41.93f87c9e.js.gz new file mode 100644 index 000000000..d85bebb8a Binary files /dev/null and b/docs/assets/js/41.93f87c9e.js.gz differ diff --git a/docs/assets/js/41.de2955e8.js.gz b/docs/assets/js/41.de2955e8.js.gz deleted file mode 100644 index 7f21e0bcb..000000000 Binary files a/docs/assets/js/41.de2955e8.js.gz and /dev/null differ diff --git a/docs/assets/js/57.989b8a1c.js b/docs/assets/js/57.13fe983a.js similarity index 99% rename from docs/assets/js/57.989b8a1c.js rename to docs/assets/js/57.13fe983a.js index c06ae1e5e..d6922583d 100644 --- a/docs/assets/js/57.989b8a1c.js +++ b/docs/assets/js/57.13fe983a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{679:function(e,t,a){"use strict";a.r(t);var s=a(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"design-principles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#design-principles"}},[e._v("#")]),e._v(" Design Principles")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("READ FIRST")]),e._v(" "),t("p",[e._v("This page outlines the developer-related design principles in CaSS software. These are an extension of the design principles listed in the high-level guide:")]),e._v(" "),t("p",[t("RouterLink",{attrs:{to:"/guide/overview/#design-principles"}},[e._v("General Design Principles")])],1)]),e._v(" "),t("p",[e._v("These design concepts represent positions currently taken by the CaSS Project.")]),e._v(" "),t("h2",{attrs:{id:"open-linked-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-linked-data"}},[e._v("#")]),e._v(" Open Linked Data")]),e._v(" "),t("p",[e._v("The CaSS data architecture is built upon the concepts of "),t("strong",[e._v("Open Data")]),e._v(" and "),t("strong",[e._v("Linked Data")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Open Data")])]),e._v(" "),t("p",[e._v("By default, data should be available to anyone who makes a request.")])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Linked Data")])]),e._v(" "),t("p",[e._v("References to data should be done using URLs rather than internal identifiers.")])]),e._v(" "),t("p",[e._v("Implementation of these concepts has another effect. If an application’s data is open, then its schema should also be open. If schemas are open, then users of the same data should agree on the schema. This need for schema collaboration has resulted in efforts such as schema.org.")]),e._v(" "),t("p",[e._v("Open Data is not incompatible with personal, private, or protected information. Instead of securing all data by default, resulting in huge silos of data that would otherwise be of limited use, it requires the developer or user to understand the implications of protecting their data and to do so deliberately.")]),e._v(" "),t("p",[e._v("Open Linked Data creates the potential for the entire internet to act as a database for all applications, creating an information superhighway not just for documents on the web, as HTTP and HTML have done, but for data on the web, using HTTP, JSON and other formats.")]),e._v(" "),t("p",[e._v("CaSS embraces this concept wholly, with the goal of taking the world’s competency and competence data and increasing its value by making it accessible from anywhere, at any time.")]),e._v(" "),t("h2",{attrs:{id:"no-knowledge-repository"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#no-knowledge-repository"}},[e._v("#")]),e._v(" No Knowledge Repository")]),e._v(" "),t("p",[t("strong",[e._v("No Knowledge")]),e._v(" (previously '"),t("em",[e._v("Zero-Knowledge")]),e._v("') is a concept that arose in response to hacks and data breaches that continue to occur on a daily basis. No Knowledge software was invented by "),t("a",{attrs:{href:"https://spideroak.com/about/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SpiderOak"),t("OutboundLink")],1),e._v(". Adopted by developers of backup software, No Knowledge declares:")]),e._v(" "),t("ol",[t("li",[e._v("You shouldn’t have to blindly trust your vendors")]),e._v(" "),t("li",[e._v("When you have something worth protecting, privacy is everything")]),e._v(" "),t("li",[e._v("Your data is yours, and should always be in your control")]),e._v(" "),t("li",[e._v("Encryption should not sacrifice usability")])]),e._v(" "),t("p",[e._v("In CaSS, partially-encrypted or wholly-encrypted data can be delivered to multiple sources with a permissioning system that persists across transmissions and ensures that the only parties with access to the data are those identified by the data. This places the burden of security back on the creator of the data and the user of the data, where we believe it belongs.")]),e._v(" "),t("h2",{attrs:{id:"public-key-infrastructure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#public-key-infrastructure"}},[e._v("#")]),e._v(" Public Key Infrastructure")]),e._v(" "),t("p",[e._v("Individuals have a vested interest in keeping their educational records private, so a traditional identification scheme was not an option in CaSS. Instead, we chose a public key infrastructure to allow individuals and parties to carry multiple keys that unlock different aspects of their lives. Much like the keys on a keyring, these keys can be used to access data stored across many servers, and the keys themselves semi-anonymize the user. Further, PKI is currently in use by nearly all servers with SSL certificates and is a widely supported and understood set of practices.")]),e._v(" "),t("h2",{attrs:{id:"uri-url-urn-nuances"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#uri-url-urn-nuances"}},[e._v("#")]),e._v(" URI/URL/URN Nuances")]),e._v(" "),t("p",[e._v("In CaSS, objects are identified by long strings of characters called URLs. URLs (and URNs) are types of URIs.")]),e._v(" "),t("p",[e._v("Examples of these:")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("URL")])]),e._v(" "),t("p",[t("code",[e._v("https://dev.cassproject.org/api/data/76ffff33-bd15-4bf3-a007-4ce247d2216d")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("URI")])]),e._v(" "),t("p",[t("code",[e._v("competencyFramework://76ffff33-bd15-4bf3-a007-4ce247d2216d")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("URN")])]),e._v(" "),t("p",[t("code",[e._v("competencyFramework:O*NET")])])])]),e._v(" "),t("p",[e._v("URIs, URLs, and URNs can all be identifiers for the aforementioned competency frameworks. However, only a URL provides nearly any system the ability to retrieve the data referred to by the URL. This distinction is important for machine-operable data.")]),e._v(" "),t("p",[e._v("CaSS is capable of handling URLs that identify external resources, and the CaSS Library automatically will attempt to retrieve information from appropriate repositories.")]),e._v(" "),t("h2",{attrs:{id:"standards-based-api-s"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standards-based-api-s"}},[e._v("#")]),e._v(" Standards-Based API's")]),e._v(" "),t("p",[e._v("CaSS attempts to adhere as closely as possible to REST and standard practices of search (e.g. "),t("code",[e._v("?q=")]),e._v("). Additionally, we seek to implement existing standards that closely adhere to the purpose of CaSS. By building and maintaining a simple custom API, and implementing several standard APIs, we hope to create a system that transparently introduces interoperability into an ecosystem prone to fragmentation.")]),e._v(" "),t("h2",{attrs:{id:"descriptive-not-prescriptive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#descriptive-not-prescriptive"}},[e._v("#")]),e._v(" Descriptive, not Prescriptive")]),e._v(" "),t("p",[e._v("While it is generally impossible to avoid prescription in a software project, CaSS is intended to enable the widest range of interoperability for competency-based systems through the ability to describe existing competency frameworks, procedures and processes, and policies in a common fashion. Therefore, while demonstrations of CaSS may exhibit functionality (such as username and password login), that functionality is very commonly not necessary to operate CaSS and may be replaced by more or less complex systems.")]),e._v(" "),t("p",[e._v("This stance greatly improves the range of interoperability at the cost of conformance. The CaSS project endeavors to record and promote best practices, but does not enforce them.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{678:function(e,t,a){"use strict";a.r(t);var s=a(69),o=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"design-principles"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#design-principles"}},[e._v("#")]),e._v(" Design Principles")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("READ FIRST")]),e._v(" "),t("p",[e._v("This page outlines the developer-related design principles in CaSS software. These are an extension of the design principles listed in the high-level guide:")]),e._v(" "),t("p",[t("RouterLink",{attrs:{to:"/guide/overview/#design-principles"}},[e._v("General Design Principles")])],1)]),e._v(" "),t("p",[e._v("These design concepts represent positions currently taken by the CaSS Project.")]),e._v(" "),t("h2",{attrs:{id:"open-linked-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#open-linked-data"}},[e._v("#")]),e._v(" Open Linked Data")]),e._v(" "),t("p",[e._v("The CaSS data architecture is built upon the concepts of "),t("strong",[e._v("Open Data")]),e._v(" and "),t("strong",[e._v("Linked Data")]),e._v(".")]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Open Data")])]),e._v(" "),t("p",[e._v("By default, data should be available to anyone who makes a request.")])]),e._v(" "),t("blockquote",[t("p",[t("strong",[e._v("Linked Data")])]),e._v(" "),t("p",[e._v("References to data should be done using URLs rather than internal identifiers.")])]),e._v(" "),t("p",[e._v("Implementation of these concepts has another effect. If an application’s data is open, then its schema should also be open. If schemas are open, then users of the same data should agree on the schema. This need for schema collaboration has resulted in efforts such as schema.org.")]),e._v(" "),t("p",[e._v("Open Data is not incompatible with personal, private, or protected information. Instead of securing all data by default, resulting in huge silos of data that would otherwise be of limited use, it requires the developer or user to understand the implications of protecting their data and to do so deliberately.")]),e._v(" "),t("p",[e._v("Open Linked Data creates the potential for the entire internet to act as a database for all applications, creating an information superhighway not just for documents on the web, as HTTP and HTML have done, but for data on the web, using HTTP, JSON and other formats.")]),e._v(" "),t("p",[e._v("CaSS embraces this concept wholly, with the goal of taking the world’s competency and competence data and increasing its value by making it accessible from anywhere, at any time.")]),e._v(" "),t("h2",{attrs:{id:"no-knowledge-repository"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#no-knowledge-repository"}},[e._v("#")]),e._v(" No Knowledge Repository")]),e._v(" "),t("p",[t("strong",[e._v("No Knowledge")]),e._v(" (previously '"),t("em",[e._v("Zero-Knowledge")]),e._v("') is a concept that arose in response to hacks and data breaches that continue to occur on a daily basis. No Knowledge software was invented by "),t("a",{attrs:{href:"https://spideroak.com/about/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SpiderOak"),t("OutboundLink")],1),e._v(". Adopted by developers of backup software, No Knowledge declares:")]),e._v(" "),t("ol",[t("li",[e._v("You shouldn’t have to blindly trust your vendors")]),e._v(" "),t("li",[e._v("When you have something worth protecting, privacy is everything")]),e._v(" "),t("li",[e._v("Your data is yours, and should always be in your control")]),e._v(" "),t("li",[e._v("Encryption should not sacrifice usability")])]),e._v(" "),t("p",[e._v("In CaSS, partially-encrypted or wholly-encrypted data can be delivered to multiple sources with a permissioning system that persists across transmissions and ensures that the only parties with access to the data are those identified by the data. This places the burden of security back on the creator of the data and the user of the data, where we believe it belongs.")]),e._v(" "),t("h2",{attrs:{id:"public-key-infrastructure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#public-key-infrastructure"}},[e._v("#")]),e._v(" Public Key Infrastructure")]),e._v(" "),t("p",[e._v("Individuals have a vested interest in keeping their educational records private, so a traditional identification scheme was not an option in CaSS. Instead, we chose a public key infrastructure to allow individuals and parties to carry multiple keys that unlock different aspects of their lives. Much like the keys on a keyring, these keys can be used to access data stored across many servers, and the keys themselves semi-anonymize the user. Further, PKI is currently in use by nearly all servers with SSL certificates and is a widely supported and understood set of practices.")]),e._v(" "),t("h2",{attrs:{id:"uri-url-urn-nuances"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#uri-url-urn-nuances"}},[e._v("#")]),e._v(" URI/URL/URN Nuances")]),e._v(" "),t("p",[e._v("In CaSS, objects are identified by long strings of characters called URLs. URLs (and URNs) are types of URIs.")]),e._v(" "),t("p",[e._v("Examples of these:")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("URL")])]),e._v(" "),t("p",[t("code",[e._v("https://dev.cassproject.org/api/data/76ffff33-bd15-4bf3-a007-4ce247d2216d")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("URI")])]),e._v(" "),t("p",[t("code",[e._v("competencyFramework://76ffff33-bd15-4bf3-a007-4ce247d2216d")])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("URN")])]),e._v(" "),t("p",[t("code",[e._v("competencyFramework:O*NET")])])])]),e._v(" "),t("p",[e._v("URIs, URLs, and URNs can all be identifiers for the aforementioned competency frameworks. However, only a URL provides nearly any system the ability to retrieve the data referred to by the URL. This distinction is important for machine-operable data.")]),e._v(" "),t("p",[e._v("CaSS is capable of handling URLs that identify external resources, and the CaSS Library automatically will attempt to retrieve information from appropriate repositories.")]),e._v(" "),t("h2",{attrs:{id:"standards-based-api-s"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#standards-based-api-s"}},[e._v("#")]),e._v(" Standards-Based API's")]),e._v(" "),t("p",[e._v("CaSS attempts to adhere as closely as possible to REST and standard practices of search (e.g. "),t("code",[e._v("?q=")]),e._v("). Additionally, we seek to implement existing standards that closely adhere to the purpose of CaSS. By building and maintaining a simple custom API, and implementing several standard APIs, we hope to create a system that transparently introduces interoperability into an ecosystem prone to fragmentation.")]),e._v(" "),t("h2",{attrs:{id:"descriptive-not-prescriptive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#descriptive-not-prescriptive"}},[e._v("#")]),e._v(" Descriptive, not Prescriptive")]),e._v(" "),t("p",[e._v("While it is generally impossible to avoid prescription in a software project, CaSS is intended to enable the widest range of interoperability for competency-based systems through the ability to describe existing competency frameworks, procedures and processes, and policies in a common fashion. Therefore, while demonstrations of CaSS may exhibit functionality (such as username and password login), that functionality is very commonly not necessary to operate CaSS and may be replaced by more or less complex systems.")]),e._v(" "),t("p",[e._v("This stance greatly improves the range of interoperability at the cost of conformance. The CaSS project endeavors to record and promote best practices, but does not enforce them.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/57.13fe983a.js.gz b/docs/assets/js/57.13fe983a.js.gz new file mode 100644 index 000000000..6f5c60132 Binary files /dev/null and b/docs/assets/js/57.13fe983a.js.gz differ diff --git a/docs/assets/js/57.989b8a1c.js.gz b/docs/assets/js/57.989b8a1c.js.gz deleted file mode 100644 index 2617b9880..000000000 Binary files a/docs/assets/js/57.989b8a1c.js.gz and /dev/null differ diff --git a/docs/assets/js/58.87d9b189.js b/docs/assets/js/58.e2808c10.js similarity index 91% rename from docs/assets/js/58.87d9b189.js rename to docs/assets/js/58.e2808c10.js index 89aeb3cfb..ce56d31ea 100644 --- a/docs/assets/js/58.87d9b189.js +++ b/docs/assets/js/58.e2808c10.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{678:function(t,e,o){"use strict";o.r(e);var s=o(69),a=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("These pages document ways of extending CaSS with other tools, e.g. working with Moodle. CaSS offers several pre-built adapters for some of these situations as well.")]),t._v(" "),e("p",[t._v("Be sure to check out the "),e("RouterLink",{attrs:{to:"/guide/interoperability/"}},[t._v("Interoperability Page")]),t._v(" in the High-Level Guide as well.")],1)])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{679:function(t,e,o){"use strict";o.r(e);var s=o(69),a=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("These pages document ways of extending CaSS with other tools, e.g. working with Moodle. CaSS offers several pre-built adapters for some of these situations as well.")]),t._v(" "),e("p",[t._v("Be sure to check out the "),e("RouterLink",{attrs:{to:"/guide/interoperability/"}},[t._v("Interoperability Page")]),t._v(" in the High-Level Guide as well.")],1)])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/58.87d9b189.js.gz b/docs/assets/js/58.e2808c10.js.gz similarity index 52% rename from docs/assets/js/58.87d9b189.js.gz rename to docs/assets/js/58.e2808c10.js.gz index a07ab4648..67d88dff1 100644 Binary files a/docs/assets/js/58.87d9b189.js.gz and b/docs/assets/js/58.e2808c10.js.gz differ diff --git a/docs/assets/js/60.8c0f4ba7.js.gz b/docs/assets/js/60.8c0f4ba7.js.gz deleted file mode 100644 index 7ae5e06cb..000000000 Binary files a/docs/assets/js/60.8c0f4ba7.js.gz and /dev/null differ diff --git a/docs/assets/js/60.8c0f4ba7.js b/docs/assets/js/60.e2d99f4c.js similarity index 96% rename from docs/assets/js/60.8c0f4ba7.js rename to docs/assets/js/60.e2d99f4c.js index 741b00b00..40d2b3400 100644 --- a/docs/assets/js/60.8c0f4ba7.js +++ b/docs/assets/js/60.e2d99f4c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{681:function(a,t,s){"use strict";s.r(t);var r=s(69),e=Object(r.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"achievement-standards-network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#achievement-standards-network"}},[a._v("#")]),a._v(" Achievement Standards Network")]),a._v(" "),t("p",[a._v("The ASN Adapter converts CaSS Frameworks to and from ASN.")]),a._v(" "),t("p",[t("strong",[a._v("Endpoints")])]),a._v(" "),t("div",{staticClass:"language-hs extra-class"},[t("pre",{pre:!0,attrs:{class:"language-hs"}},[t("code",[t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("GET")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("asn")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/<")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("framework")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("id")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Retrieve ASN version of framework")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("POST")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("asn")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Convert ASN framework to CaSS Framework")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{682:function(a,t,s){"use strict";s.r(t);var r=s(69),e=Object(r.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"achievement-standards-network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#achievement-standards-network"}},[a._v("#")]),a._v(" Achievement Standards Network")]),a._v(" "),t("p",[a._v("The ASN Adapter converts CaSS Frameworks to and from ASN.")]),a._v(" "),t("p",[t("strong",[a._v("Endpoints")])]),a._v(" "),t("div",{staticClass:"language-hs extra-class"},[t("pre",{pre:!0,attrs:{class:"language-hs"}},[t("code",[t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("GET")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("asn")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/<")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("framework")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("id")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Retrieve ASN version of framework")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("POST")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("asn")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Convert ASN framework to CaSS Framework")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/60.e2d99f4c.js.gz b/docs/assets/js/60.e2d99f4c.js.gz new file mode 100644 index 000000000..9b3612566 Binary files /dev/null and b/docs/assets/js/60.e2d99f4c.js.gz differ diff --git a/docs/assets/js/61.f6645721.js b/docs/assets/js/61.ce3a24b3.js similarity index 96% rename from docs/assets/js/61.f6645721.js rename to docs/assets/js/61.ce3a24b3.js index af933eedd..eb2e3b4bf 100644 --- a/docs/assets/js/61.f6645721.js +++ b/docs/assets/js/61.ce3a24b3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{683:function(a,t,s){"use strict";s.r(t);var e=s(69),r=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"credential-engine-asn"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credential-engine-asn"}},[a._v("#")]),a._v(" Credential Engine ASN")]),a._v(" "),t("p",[a._v("The CEASN Adapter converts CaSS Frameworks to and from "),t("a",{attrs:{href:"https://credreg.net/ctdlasn/handbook",target:"_blank",rel:"noopener noreferrer"}},[a._v("CTDL-ASN"),t("OutboundLink")],1),a._v(".")]),a._v(" "),t("p",[t("strong",[a._v("Endpoints")])]),a._v(" "),t("div",{staticClass:"language-hs extra-class"},[t("pre",{pre:!0,attrs:{class:"language-hs"}},[t("code",[t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("GET")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/<")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("framework")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("id")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Retrieve CTDL-ASN version of framework")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("POST")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Convert CTDL-ASN framework to CaSS Framework")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{681:function(a,t,s){"use strict";s.r(t);var e=s(69),r=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"credential-engine-asn"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#credential-engine-asn"}},[a._v("#")]),a._v(" Credential Engine ASN")]),a._v(" "),t("p",[a._v("The CEASN Adapter converts CaSS Frameworks to and from "),t("a",{attrs:{href:"https://credreg.net/ctdlasn/handbook",target:"_blank",rel:"noopener noreferrer"}},[a._v("CTDL-ASN"),t("OutboundLink")],1),a._v(".")]),a._v(" "),t("p",[t("strong",[a._v("Endpoints")])]),a._v(" "),t("div",{staticClass:"language-hs extra-class"},[t("pre",{pre:!0,attrs:{class:"language-hs"}},[t("code",[t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("GET")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/<")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("framework")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("id")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Retrieve CTDL-ASN version of framework")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token constant"}},[a._v("POST")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("api")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),t("span",{pre:!0,attrs:{class:"token hvariable"}},[a._v("ceasn")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("-- Convert CTDL-ASN framework to CaSS Framework")]),a._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/61.ce3a24b3.js.gz b/docs/assets/js/61.ce3a24b3.js.gz new file mode 100644 index 000000000..143969899 Binary files /dev/null and b/docs/assets/js/61.ce3a24b3.js.gz differ diff --git a/docs/assets/js/61.f6645721.js.gz b/docs/assets/js/61.f6645721.js.gz deleted file mode 100644 index 6eac88fc3..000000000 Binary files a/docs/assets/js/61.f6645721.js.gz and /dev/null differ diff --git a/docs/assets/js/62.2156f6ac.js b/docs/assets/js/62.0a0bae63.js similarity index 91% rename from docs/assets/js/62.2156f6ac.js rename to docs/assets/js/62.0a0bae63.js index 6173de99c..ea8a49c61 100644 --- a/docs/assets/js/62.2156f6ac.js +++ b/docs/assets/js/62.0a0bae63.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{682:function(t,e,s){"use strict";s.r(e);var i=s(69),a=Object(i.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"ims-case"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-case"}},[this._v("#")]),this._v(" IMS CASE")]),this._v(" "),t("p",[this._v("The IMS CASE Adapter is an implementation of the IMS CASE Specification that converts CaSS Frameworks to and from CASE. The specification is described "),t("a",{attrs:{href:"http://www.imsglobal.org/activity/case",target:"_blank",rel:"noopener noreferrer"}},[this._v("here"),t("OutboundLink")],1),this._v(".")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{683:function(t,e,s){"use strict";s.r(e);var i=s(69),a=Object(i.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"ims-case"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#ims-case"}},[this._v("#")]),this._v(" IMS CASE")]),this._v(" "),t("p",[this._v("The IMS CASE Adapter is an implementation of the IMS CASE Specification that converts CaSS Frameworks to and from CASE. The specification is described "),t("a",{attrs:{href:"http://www.imsglobal.org/activity/case",target:"_blank",rel:"noopener noreferrer"}},[this._v("here"),t("OutboundLink")],1),this._v(".")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/62.0a0bae63.js.gz b/docs/assets/js/62.0a0bae63.js.gz new file mode 100644 index 000000000..a466e89a3 Binary files /dev/null and b/docs/assets/js/62.0a0bae63.js.gz differ diff --git a/docs/assets/js/62.2156f6ac.js.gz b/docs/assets/js/62.2156f6ac.js.gz deleted file mode 100644 index 21780d55a..000000000 Binary files a/docs/assets/js/62.2156f6ac.js.gz and /dev/null differ diff --git a/docs/assets/js/66.2af9d6d6.js.gz b/docs/assets/js/66.2af9d6d6.js.gz deleted file mode 100644 index f158be620..000000000 Binary files a/docs/assets/js/66.2af9d6d6.js.gz and /dev/null differ diff --git a/docs/assets/js/66.2af9d6d6.js b/docs/assets/js/66.9f78183e.js similarity index 98% rename from docs/assets/js/66.2af9d6d6.js rename to docs/assets/js/66.9f78183e.js index 6cf6e041b..35e8389e8 100644 --- a/docs/assets/js/66.2af9d6d6.js +++ b/docs/assets/js/66.9f78183e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{688:function(e,t,a){"use strict";a.r(t);var o=a(69),r=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"other-schemas"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-schemas"}},[e._v("#")]),e._v(" Other Schemas")]),e._v(" "),t("p",[e._v("This page discusses how to work with other outside schemas.")]),e._v(" "),t("p",[e._v("CaSS Libraries includes "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.schema.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for schema.org"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.credentialengine.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for the Credential Engine (CTDL)"),t("OutboundLink")],1),e._v(". These expose large numbers of objects that are not related to competencies and frameworks and are included for convenience and to encourage interoperability.")]),e._v(" "),t("p",[e._v("Additionally, CaSS schemas may be extended with additional information. These same principles apply.")]),e._v(" "),t("h2",{attrs:{id:"concerns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#concerns"}},[e._v("#")]),e._v(" Concerns")]),e._v(" "),t("p",[e._v("While working with these other objects, several additional concerns must be taken into account:")]),e._v(" "),t("ul",[t("li",[e._v("CaSS objects (usually prefixed with "),t("code",[e._v("Ec")]),e._v(" such as "),t("code",[e._v("EcAssertion")]),e._v(") have helper functions and security/privacy expectations built into them. Though they may reference personally identifiable and sensitive information these mechanisms may not be built into objects belonging to another schema. It is extremely important to safeguard the security and privacy of the data contained within these objects, as by default, all information stored in CaSS is publicly discoverable and accessible.")]),e._v(" "),t("li",[e._v("When performing operations that generate data that is accessible to the internet, it is worthwhile to scan for other uses of the objects you have chosen and determine its compatibility with other others. Guidelines can be found at "),t("a",{attrs:{href:"https://developers.google.com/search/docs/data-types/articles",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google"),t("OutboundLink")],1),e._v(", and in so-called “Profiles” such as this one from "),t("a",{attrs:{href:"https://www.ibm.com/developerworks/rational/library/basic-profile-linked-data/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBM"),t("OutboundLink")],1),e._v(". Profiles can vary widely in scope and application but have been described as patterns of behavior around the population and use of common data objects for interoperability purposes. Profiles can also be found associated with "),t("a",{attrs:{href:"http://datainteroperability.org/research-activity-xapi-data-interoperability/xapi-profiles/",target:"_blank",rel:"noopener noreferrer"}},[e._v("other efforts"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"advantages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advantages"}},[e._v("#")]),e._v(" Advantages")]),e._v(" "),t("p",[e._v("Using the patterns of application development that CaSS enables the sharing of permissioned objects, cooperative data interaction, and rapid application development.")]),e._v(" "),t("h2",{attrs:{id:"future"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#future"}},[e._v("#")]),e._v(" Future")]),e._v(" "),t("p",[e._v("We expect that at some point in the future, the CaSS methodology will be generalized into its own set of frameworks with its own name.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{687:function(e,t,a){"use strict";a.r(t);var o=a(69),r=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"other-schemas"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-schemas"}},[e._v("#")]),e._v(" Other Schemas")]),e._v(" "),t("p",[e._v("This page discusses how to work with other outside schemas.")]),e._v(" "),t("p",[e._v("CaSS Libraries includes "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.schema.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for schema.org"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.credentialengine.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("schemata for the Credential Engine (CTDL)"),t("OutboundLink")],1),e._v(". These expose large numbers of objects that are not related to competencies and frameworks and are included for convenience and to encourage interoperability.")]),e._v(" "),t("p",[e._v("Additionally, CaSS schemas may be extended with additional information. These same principles apply.")]),e._v(" "),t("h2",{attrs:{id:"concerns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#concerns"}},[e._v("#")]),e._v(" Concerns")]),e._v(" "),t("p",[e._v("While working with these other objects, several additional concerns must be taken into account:")]),e._v(" "),t("ul",[t("li",[e._v("CaSS objects (usually prefixed with "),t("code",[e._v("Ec")]),e._v(" such as "),t("code",[e._v("EcAssertion")]),e._v(") have helper functions and security/privacy expectations built into them. Though they may reference personally identifiable and sensitive information these mechanisms may not be built into objects belonging to another schema. It is extremely important to safeguard the security and privacy of the data contained within these objects, as by default, all information stored in CaSS is publicly discoverable and accessible.")]),e._v(" "),t("li",[e._v("When performing operations that generate data that is accessible to the internet, it is worthwhile to scan for other uses of the objects you have chosen and determine its compatibility with other others. Guidelines can be found at "),t("a",{attrs:{href:"https://developers.google.com/search/docs/data-types/articles",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google"),t("OutboundLink")],1),e._v(", and in so-called “Profiles” such as this one from "),t("a",{attrs:{href:"https://www.ibm.com/developerworks/rational/library/basic-profile-linked-data/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("IBM"),t("OutboundLink")],1),e._v(". Profiles can vary widely in scope and application but have been described as patterns of behavior around the population and use of common data objects for interoperability purposes. Profiles can also be found associated with "),t("a",{attrs:{href:"http://datainteroperability.org/research-activity-xapi-data-interoperability/xapi-profiles/",target:"_blank",rel:"noopener noreferrer"}},[e._v("other efforts"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"advantages"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advantages"}},[e._v("#")]),e._v(" Advantages")]),e._v(" "),t("p",[e._v("Using the patterns of application development that CaSS enables the sharing of permissioned objects, cooperative data interaction, and rapid application development.")]),e._v(" "),t("h2",{attrs:{id:"future"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#future"}},[e._v("#")]),e._v(" Future")]),e._v(" "),t("p",[e._v("We expect that at some point in the future, the CaSS methodology will be generalized into its own set of frameworks with its own name.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/66.9f78183e.js.gz b/docs/assets/js/66.9f78183e.js.gz new file mode 100644 index 000000000..f90cd152e Binary files /dev/null and b/docs/assets/js/66.9f78183e.js.gz differ diff --git a/docs/assets/js/67.b10ec269.js b/docs/assets/js/67.65b47142.js similarity index 99% rename from docs/assets/js/67.b10ec269.js rename to docs/assets/js/67.65b47142.js index 651f51f71..5f7ddbeda 100644 --- a/docs/assets/js/67.b10ec269.js +++ b/docs/assets/js/67.65b47142.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{687:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"assertion-processing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processing"}},[t._v("#")]),t._v(" Assertion Processing")]),t._v(" "),s("blockquote",[s("p",[t._v("Assertion processing is the process of answering questions about an individual based on a chosen algorithm using some amount of data.")])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("READ ME FIRST")]),t._v(" "),s("p",[t._v("Be sure to read the "),s("RouterLink",{attrs:{to:"/guide/assertion-processing/"}},[t._v("High-Level guide's Assertion Processing Section")]),t._v(" for more information on this topic beforehand.")],1)]),t._v(" "),s("p",[t._v("This page will discuss how to process collections of CaSS Assertions, which will be attached to some CaSS Competencies as well as Identitites.")]),t._v(" "),s("h2",{attrs:{id:"types-of-processors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types-of-processors"}},[t._v("#")]),t._v(" Types of Processors")]),t._v(" "),s("p",[t._v("There are currently two types of assertion processors and three co-processors.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Built-in Processors")]),t._v(" "),s("ol",[s("li",[s("em",[t._v("OptimisticQuadnaryAssertionProcessor")])]),t._v(" "),s("li",[s("em",[t._v("PessimisticQuadnaryAssertionProcessor")])])])]),t._v(" "),s("p",[t._v("The "),s("strong",[t._v("OptimisticQuadnaryAssertionProcessor")]),t._v(" object answers the question")]),t._v(" "),s("blockquote",[s("p",[t._v("“Does Learner L have Competency C based on an optimistic view of competence?”")])]),t._v(" "),s("p",[t._v("The optimistic view states that if the following framework exists")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("Basic Arithmetic")])]),t._v(" "),s("ul",[s("li",[t._v("Addition "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])]),t._v(" "),s("li",[t._v("Subtraction "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])]),t._v(" "),s("li",[t._v("Multiplication "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])]),t._v(" "),s("li",[t._v("Division "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])])])]),t._v(" "),s("p",[t._v("and someone has assertions for "),s("em",[t._v("Addition, Subtraction, Multiplication,")]),t._v(" and "),s("em",[t._v("Division")]),t._v(", that they have Basic Arithmetic.")]),t._v(" "),s("p",[t._v("The pessimistic view taken by the "),s("strong",[t._v("PessimisticQuadnaryAssertionProcessor")]),t._v(" object does not make this assumption, instead believing that Basic Arithmetic could have additional competence that has not been modeled in CaSS.")]),t._v(" "),s("p",[t._v("Both processors are Quadnary Processors.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Quadnary Processor")]),t._v(" "),s("p",[t._v("Can return four answers:")]),t._v(" "),s("ol",[s("li",[t._v("Yes")]),t._v(" "),s("li",[t._v("No")]),t._v(" "),s("li",[t._v("Indeterminate "),s("em",[t._v("(conflicting evidence)")])]),t._v(" "),s("li",[t._v("Unknown "),s("em",[t._v("(not enough information)")])])])]),t._v(" "),s("p",[t._v("Assertion Processors interpret knowledge encoded in relationships to make additional inferences about frameworks. As an example, if someone has an assertion for Basic Arithmetic, it is assumed they have Addition. Additionally, if they have a negative assertion stating they do not have Addition, that they do not have Basic Arithmetic.")]),t._v(" "),s("p",[t._v("Similarly, if Subtraction requires Addition, and there is a negative assertion about Addition, they cannot have Subtraction. If there is a positive assertion about Subtraction, then it is presumed they have Addition.")]),t._v(" "),s("p",[s("strong",[t._v("Equivalence")]),t._v(" is also observed.")]),t._v(" "),s("h2",{attrs:{id:"identity-scope-and-access"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#identity-scope-and-access"}},[t._v("#")]),t._v(" Identity, Scope, and Access")]),t._v(" "),s("p",[t._v("The type of assertion processor determines the assumptions that are made in computing some assertion, but scope, identity and access also have factors in making these decisions.")]),t._v(" "),s("p",[t._v("When launching an assertion processor, you should provide all known identities for the individual, all frameworks that your institution observes, and all servers that the individual has records on. Finally, if you do not have access to the necessary records, you may receive results that do not align with reality. The individual, with all their identities, has the best visibility into their competence.")]),t._v(" "),s("h2",{attrs:{id:"running-an-assertion-processor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-an-assertion-processor"}},[t._v("#")]),t._v(" Running an Assertion Processor")]),t._v(" "),s("p",[t._v("The below code runs the assertion processor with one identity, targeting one competency in one framework,")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" ep "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PessimisticQuadnaryAssertionProcessor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("logFunction")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("repositories"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("push")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" subject "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Array")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsubject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("push")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("target"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" additionalSignatures "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("has")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n subject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n competency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n level"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n framework"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n additionalSignatures"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("success"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("ask")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ask"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("failure"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"co-processors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#co-processors"}},[t._v("#")]),t._v(" Co-Processors")]),t._v(" "),s("p",[t._v("A Co-Processor is a processor that can be tacked onto an assertion processor to augment its processing capabilities.")]),t._v(" "),s("p",[t._v("One example of this is a co-processor that generates assertions of competence based on certificates that the person has. Another may query a third party system for learner data that is then converted into competency assertions.")]),t._v(" "),s("p",[t._v("Extending the class "),s("code",[t._v("AssertionCoprocessor")]),t._v(" can expose this capability.")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{690:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"assertion-processing"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#assertion-processing"}},[t._v("#")]),t._v(" Assertion Processing")]),t._v(" "),s("blockquote",[s("p",[t._v("Assertion processing is the process of answering questions about an individual based on a chosen algorithm using some amount of data.")])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("READ ME FIRST")]),t._v(" "),s("p",[t._v("Be sure to read the "),s("RouterLink",{attrs:{to:"/guide/assertion-processing/"}},[t._v("High-Level guide's Assertion Processing Section")]),t._v(" for more information on this topic beforehand.")],1)]),t._v(" "),s("p",[t._v("This page will discuss how to process collections of CaSS Assertions, which will be attached to some CaSS Competencies as well as Identitites.")]),t._v(" "),s("h2",{attrs:{id:"types-of-processors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#types-of-processors"}},[t._v("#")]),t._v(" Types of Processors")]),t._v(" "),s("p",[t._v("There are currently two types of assertion processors and three co-processors.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Built-in Processors")]),t._v(" "),s("ol",[s("li",[s("em",[t._v("OptimisticQuadnaryAssertionProcessor")])]),t._v(" "),s("li",[s("em",[t._v("PessimisticQuadnaryAssertionProcessor")])])])]),t._v(" "),s("p",[t._v("The "),s("strong",[t._v("OptimisticQuadnaryAssertionProcessor")]),t._v(" object answers the question")]),t._v(" "),s("blockquote",[s("p",[t._v("“Does Learner L have Competency C based on an optimistic view of competence?”")])]),t._v(" "),s("p",[t._v("The optimistic view states that if the following framework exists")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("Basic Arithmetic")])]),t._v(" "),s("ul",[s("li",[t._v("Addition "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])]),t._v(" "),s("li",[t._v("Subtraction "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])]),t._v(" "),s("li",[t._v("Multiplication "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])]),t._v(" "),s("li",[t._v("Division "),s("em",[t._v("(narrowing Basic Arithmetic via a relation)")])])])]),t._v(" "),s("p",[t._v("and someone has assertions for "),s("em",[t._v("Addition, Subtraction, Multiplication,")]),t._v(" and "),s("em",[t._v("Division")]),t._v(", that they have Basic Arithmetic.")]),t._v(" "),s("p",[t._v("The pessimistic view taken by the "),s("strong",[t._v("PessimisticQuadnaryAssertionProcessor")]),t._v(" object does not make this assumption, instead believing that Basic Arithmetic could have additional competence that has not been modeled in CaSS.")]),t._v(" "),s("p",[t._v("Both processors are Quadnary Processors.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Quadnary Processor")]),t._v(" "),s("p",[t._v("Can return four answers:")]),t._v(" "),s("ol",[s("li",[t._v("Yes")]),t._v(" "),s("li",[t._v("No")]),t._v(" "),s("li",[t._v("Indeterminate "),s("em",[t._v("(conflicting evidence)")])]),t._v(" "),s("li",[t._v("Unknown "),s("em",[t._v("(not enough information)")])])])]),t._v(" "),s("p",[t._v("Assertion Processors interpret knowledge encoded in relationships to make additional inferences about frameworks. As an example, if someone has an assertion for Basic Arithmetic, it is assumed they have Addition. Additionally, if they have a negative assertion stating they do not have Addition, that they do not have Basic Arithmetic.")]),t._v(" "),s("p",[t._v("Similarly, if Subtraction requires Addition, and there is a negative assertion about Addition, they cannot have Subtraction. If there is a positive assertion about Subtraction, then it is presumed they have Addition.")]),t._v(" "),s("p",[s("strong",[t._v("Equivalence")]),t._v(" is also observed.")]),t._v(" "),s("h2",{attrs:{id:"identity-scope-and-access"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#identity-scope-and-access"}},[t._v("#")]),t._v(" Identity, Scope, and Access")]),t._v(" "),s("p",[t._v("The type of assertion processor determines the assumptions that are made in computing some assertion, but scope, identity and access also have factors in making these decisions.")]),t._v(" "),s("p",[t._v("When launching an assertion processor, you should provide all known identities for the individual, all frameworks that your institution observes, and all servers that the individual has records on. Finally, if you do not have access to the necessary records, you may receive results that do not align with reality. The individual, with all their identities, has the best visibility into their competence.")]),t._v(" "),s("h2",{attrs:{id:"running-an-assertion-processor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-an-assertion-processor"}},[t._v("#")]),t._v(" Running an Assertion Processor")]),t._v(" "),s("p",[t._v("The below code runs the assertion processor with one identity, targeting one competency in one framework,")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" ep "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("PessimisticQuadnaryAssertionProcessor")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("logFunction")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("data")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("repositories"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("push")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" subject "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Array")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nsubject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("push")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("target"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" additionalSignatures "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nep"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("has")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n subject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n competency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n level"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n framework"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n additionalSignatures"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("success"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("ask")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("ask"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("failure"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"co-processors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#co-processors"}},[t._v("#")]),t._v(" Co-Processors")]),t._v(" "),s("p",[t._v("A Co-Processor is a processor that can be tacked onto an assertion processor to augment its processing capabilities.")]),t._v(" "),s("p",[t._v("One example of this is a co-processor that generates assertions of competence based on certificates that the person has. Another may query a third party system for learner data that is then converted into competency assertions.")]),t._v(" "),s("p",[t._v("Extending the class "),s("code",[t._v("AssertionCoprocessor")]),t._v(" can expose this capability.")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/67.65b47142.js.gz b/docs/assets/js/67.65b47142.js.gz new file mode 100644 index 000000000..3d309d736 Binary files /dev/null and b/docs/assets/js/67.65b47142.js.gz differ diff --git a/docs/assets/js/67.b10ec269.js.gz b/docs/assets/js/67.b10ec269.js.gz deleted file mode 100644 index 8caf32bd1..000000000 Binary files a/docs/assets/js/67.b10ec269.js.gz and /dev/null differ diff --git a/docs/assets/js/68.74ae58df.js.gz b/docs/assets/js/68.74ae58df.js.gz deleted file mode 100644 index e07d5be44..000000000 Binary files a/docs/assets/js/68.74ae58df.js.gz and /dev/null differ diff --git a/docs/assets/js/68.74ae58df.js b/docs/assets/js/68.adda27fd.js similarity index 99% rename from docs/assets/js/68.74ae58df.js rename to docs/assets/js/68.adda27fd.js index 5ff8c79a4..23ba7b1c3 100644 --- a/docs/assets/js/68.74ae58df.js +++ b/docs/assets/js/68.adda27fd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{689:function(t,e,a){"use strict";a.r(e);var s=a(69),n=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"basics"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basics"}},[t._v("#")]),t._v(" Basics")]),t._v(" "),e("p",[t._v("Using the CASS Libraries, you are able to work with a number of different sets of objects, including those from CASS, Schema.org, and the Credential Engine. CASS objects have a number of additional helper methods that aren’t currently available on the objects from the other groups.")]),t._v(" "),e("p",[t._v("This guide assumes you have a "),e("RouterLink",{attrs:{to:"/dev/fundamentals/repositories/"}},[t._v("Repository")]),t._v(" defined and an "),e("RouterLink",{attrs:{to:"/dev/fundamentals/identities-and-login/"}},[t._v("Identity")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),e("p",[t._v("In general, all CASS objects follow the same inheritance model. From "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/EcLinkedData.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("EcLinkedData"),e("OutboundLink")],1),t._v(", additional fields and functionality are aggregated through three additional classes ("),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/EcRemoteLinkedData.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("EcRemoteLinkedData"),e("OutboundLink")],1),t._v(", "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/Thing.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Thing"),e("OutboundLink")],1),t._v(", and "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/CreativeWork.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("CreativeWork"),e("OutboundLink")],1),t._v(") until a base object class is created. The base object class defines all fields and operations available for working with the object itself. Another class is then created from the base object class which defines helper methods and functionality for working with the CASS environment. This is the final CASS object class and is prefixed with "),e("code",[t._v("EC")]),t._v(".")]),t._v(" "),e("p",[t._v("Example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EcCompetency - (CASS object class) Methods for interacting with CASS services on a server\n -> Competency - (base object class) All fields and methods needed to logically define a competency\n -> CreativeWork - Customized schema.org/CreativeWork\n -> Thing - Customized schema.org/Thing\n -> EcRemoteLinkedData - Data wrapper to represent remotely hosted data including fields for permission controls, signing, identifying and locating the object\n -> EcLinkedData - Represents a JSON-LD linked data object and performs serialization\n")])])]),e("p",[t._v("Most CASS objects include helper functions include helper methods for retrieving objects of that type (e.g. "),e("code",[t._v("EcCompetency.get()")]),t._v("). However, when using the "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/EcRepository.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("EcRepository"),e("OutboundLink")],1),t._v(" object to retrieve data (through "),e("code",[t._v(".get()")]),t._v(" and "),e("code",[t._v(".multiget()")]),t._v("), all objects are returned as "),e("code",[t._v("EcRemoteLinkedData")]),t._v(" types and must be cast into the proper CASS object.")]),t._v(" "),e("h2",{attrs:{id:"instantiation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#instantiation"}},[t._v("#")]),t._v(" Instantiation")]),t._v(" "),e("p",[t._v("In this example, we will be creating and operating on a "),e("a",{attrs:{href:"http://schema.org/Person",target:"_blank",rel:"noopener noreferrer"}},[t._v("schema.org/Person"),e("OutboundLink")],1),t._v(" object.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" p "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Person")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Frank Franklin"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("email "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"frank@franklyfrank.fr"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"internal-objects-vs-remote-objects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#internal-objects-vs-remote-objects"}},[t._v("#")]),t._v(" Internal objects vs Remote objects")]),t._v(" "),e("p",[t._v("An object without an Id can be thought of to be an ‘internal object’, used in intermediate calculations. To convert it to an remotely accessible object, it must be assigned a URL.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"permissioning-and-ownership"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#permissioning-and-ownership"}},[t._v("#")]),t._v(" Permissioning and Ownership")]),t._v(" "),e("p",[t._v("An object without an owner is considered public and can be acted on by any party that knows or can discover its URL. This may be useful for internal repositories where trust is high, but is not advised for repositories with public interfaces. To assign an owner:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Assigns the Public Key of the first identity of the logged in user as the owner")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Adding an owner to an object informs the repository hosting the object that nobody other than the owner can modify or delete the object. Anyone may continue to read the object (though encrypted fields will be omitted for non-reader requests).")]),t._v(" "),e("h2",{attrs:{id:"readers-vs-owners"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#readers-vs-owners"}},[t._v("#")]),t._v(" Readers vs Owners")]),t._v(" "),e("p",[t._v("Adding readers to the object allows access to the object’s data, but the repository will not allow a reader to overwrite or delete an object.")]),t._v(" "),e("p",[t._v("To assign a reader:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Assigns the Public Key of the first contact of the logged in user as a reader")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addReader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("pk"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("An object may have multiple owners and multiple readers.")]),t._v(" "),e("h2",{attrs:{id:"controlling-read-access"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#controlling-read-access"}},[t._v("#")]),t._v(" Controlling read access")]),t._v(" "),e("p",[t._v("In our security model, no actor should trust the repository. So, revoking read access involves encrypting the object.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" e "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcEncryptedValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("toEncryptedValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Note that this retains and exposes some information about the person object to the repository owner to enable "),e("RouterLink",{attrs:{to:"/dev/fundamentals/search/"}},[t._v("Search")]),t._v(": The name of the object and the object type are retained. If you would like to remove those, that’s quite alright, but it removes the ability to search by those fields. If you would like to retain any additional fields, you may copy them from the unencrypted object to the encrypted object. This will enable search by those fields (and expose them to the repository owner).")],1),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v(" e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v(" e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("encryptedType"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("To test the effects of encryption, we need to save the object and temporarily remove our identity to see that the object is no longer accessible. The repository protects encrypted objects from discovery, and the encryption protects the object against the repository owner (or server compromise).")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" repo"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" myIds "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Saving our identities elsewhere.")]),t._v("\nEcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Removing them from the expected location.")]),t._v("\nEcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cache "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Clearing the cache.")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Not found")]),t._v("\nEcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myIds"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Found!")]),t._v("\n")])])]),e("p",[t._v("Now we can decrypt the object and see it is intact.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" p "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Person")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Decrypt it and cast it into the appropriate object.")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("copyFrom")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcEncryptedValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromEcnryptedValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"saving-and-retrieving-objects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#saving-and-retrieving-objects"}},[t._v("#")]),t._v(" Saving and Retrieving objects")]),t._v(" "),e("p",[t._v("An object with an ID can be saved and retrieved. Saving can be done using "),e("code",[t._v("EcRepository")]),t._v(". It's as easy as:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Retrieving an object using EcRepository it is a bit more complex due to issues with casting. All objects returned from EcRepository methods are of the EcRemoteLinkedData type and should be cast into their desired type before use. This can be done using the following pattern: First, get the object:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Alternatively,")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Then, it needs to be “"),e("em",[t._v("cast")]),t._v("” into the desired object.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Person")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("copyFrom")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("All properties of the object are accessible from its "),e("em",[t._v("EcRemoteLinkedData")]),t._v(" data form ‘r’, however, helper functions that exist in the object won’t be available. This is particularly useful for "),e("code",[t._v("Competency -> EcCompetency")]),t._v(", "),e("code",[t._v("Framework -> EcFramework")]),t._v(", etc.")]),t._v(" "),e("h2",{attrs:{id:"versioning"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#versioning"}},[t._v("#")]),t._v(" Versioning")]),t._v(" "),e("p",[t._v("Upon save, an object’s version number (the last segment of the "),e("code",[t._v("@id")]),t._v(") is set to "),e("em",[t._v("the current UTC timestamp in milliseconds")]),t._v(". This can be used as a last-modified indicator as well as a version number. Versions of an object other than the latest are not discoverable unless they are linked from other objects.")]),t._v(" "),e("p",[t._v("Versions of objects exist to allow for immutable referencing of an object. As an example, if a person answers a question, it is relevant that they answered a particular version of a question with a particular version of an answer.")]),t._v(" "),e("p",[t._v("To access the identifier with the version number included:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("To access the identifier that pertains to the latest version of the object:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"validating-an-object"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validating-an-object"}},[t._v("#")]),t._v(" Validating an object")]),t._v(" "),e("p",[t._v("You may validate one or more signatures against one or more owners using the following:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("verify")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Returns whether the object is valid.")]),t._v("\n")])])]),e("h2",{attrs:{id:"controller-coming-soon"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#controller-coming-soon"}},[t._v("#")]),t._v(" Controller (Coming Soon)")]),t._v(" "),e("p",[t._v("A controller is allowed to modify who can read the object, but not any other information.")]),t._v(" "),e("h2",{attrs:{id:"guidelines"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#guidelines"}},[t._v("#")]),t._v(" Guidelines")]),t._v(" "),e("p",[t._v("In building any custom implementation, we recommend the following:")]),t._v(" "),e("ul",[e("li",[t._v("Keep objects as flat as possible, and refer to other objects via their ID. This promotes data reuse.")]),t._v(" "),e("li",[t._v("All objects should be owned by the person who created the data. There should be a separate owner for each level of organizational hierarchy ("),e("em",[t._v("e.g. person, school, school district, state")]),t._v(").")]),t._v(" "),e("li",[t._v("All objects should be readable by the people to whom the data pertains. If no keys exist for that person, it is acceptable to create keys on their behalf and give them the private portion upon next interaction (or email them).")]),t._v(" "),e("li",[t._v("Any objects containing personally identifiable information should be read-restricted unless the subject of the data wishes it to be public. This not only follows privacy laws such as FERPA, but it is also a common courtesy.")]),t._v(" "),e("li",[t._v("To enable research, any non-personally identifiable information should be publicly discoverable and accessible.")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{688:function(t,e,a){"use strict";a.r(e);var s=a(69),n=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"basics"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basics"}},[t._v("#")]),t._v(" Basics")]),t._v(" "),e("p",[t._v("Using the CASS Libraries, you are able to work with a number of different sets of objects, including those from CASS, Schema.org, and the Credential Engine. CASS objects have a number of additional helper methods that aren’t currently available on the objects from the other groups.")]),t._v(" "),e("p",[t._v("This guide assumes you have a "),e("RouterLink",{attrs:{to:"/dev/fundamentals/repositories/"}},[t._v("Repository")]),t._v(" defined and an "),e("RouterLink",{attrs:{to:"/dev/fundamentals/identities-and-login/"}},[t._v("Identity")]),t._v(".")],1),t._v(" "),e("h2",{attrs:{id:"overview"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[t._v("#")]),t._v(" Overview")]),t._v(" "),e("p",[t._v("In general, all CASS objects follow the same inheritance model. From "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/EcLinkedData.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("EcLinkedData"),e("OutboundLink")],1),t._v(", additional fields and functionality are aggregated through three additional classes ("),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/EcRemoteLinkedData.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("EcRemoteLinkedData"),e("OutboundLink")],1),t._v(", "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/Thing.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("Thing"),e("OutboundLink")],1),t._v(", and "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/CreativeWork.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("CreativeWork"),e("OutboundLink")],1),t._v(") until a base object class is created. The base object class defines all fields and operations available for working with the object itself. Another class is then created from the base object class which defines helper methods and functionality for working with the CASS environment. This is the final CASS object class and is prefixed with "),e("code",[t._v("EC")]),t._v(".")]),t._v(" "),e("p",[t._v("Example:")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("EcCompetency - (CASS object class) Methods for interacting with CASS services on a server\n -> Competency - (base object class) All fields and methods needed to logically define a competency\n -> CreativeWork - Customized schema.org/CreativeWork\n -> Thing - Customized schema.org/Thing\n -> EcRemoteLinkedData - Data wrapper to represent remotely hosted data including fields for permission controls, signing, identifying and locating the object\n -> EcLinkedData - Represents a JSON-LD linked data object and performs serialization\n")])])]),e("p",[t._v("Most CASS objects include helper functions include helper methods for retrieving objects of that type (e.g. "),e("code",[t._v("EcCompetency.get()")]),t._v("). However, when using the "),e("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/classes/EcRepository.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("EcRepository"),e("OutboundLink")],1),t._v(" object to retrieve data (through "),e("code",[t._v(".get()")]),t._v(" and "),e("code",[t._v(".multiget()")]),t._v("), all objects are returned as "),e("code",[t._v("EcRemoteLinkedData")]),t._v(" types and must be cast into the proper CASS object.")]),t._v(" "),e("h2",{attrs:{id:"instantiation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#instantiation"}},[t._v("#")]),t._v(" Instantiation")]),t._v(" "),e("p",[t._v("In this example, we will be creating and operating on a "),e("a",{attrs:{href:"http://schema.org/Person",target:"_blank",rel:"noopener noreferrer"}},[t._v("schema.org/Person"),e("OutboundLink")],1),t._v(" object.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" p "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Person")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Frank Franklin"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("email "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"frank@franklyfrank.fr"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"internal-objects-vs-remote-objects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#internal-objects-vs-remote-objects"}},[t._v("#")]),t._v(" Internal objects vs Remote objects")]),t._v(" "),e("p",[t._v("An object without an Id can be thought of to be an ‘internal object’, used in intermediate calculations. To convert it to an remotely accessible object, it must be assigned a URL.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"permissioning-and-ownership"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#permissioning-and-ownership"}},[t._v("#")]),t._v(" Permissioning and Ownership")]),t._v(" "),e("p",[t._v("An object without an owner is considered public and can be acted on by any party that knows or can discover its URL. This may be useful for internal repositories where trust is high, but is not advised for repositories with public interfaces. To assign an owner:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Assigns the Public Key of the first identity of the logged in user as the owner")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Adding an owner to an object informs the repository hosting the object that nobody other than the owner can modify or delete the object. Anyone may continue to read the object (though encrypted fields will be omitted for non-reader requests).")]),t._v(" "),e("h2",{attrs:{id:"readers-vs-owners"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#readers-vs-owners"}},[t._v("#")]),t._v(" Readers vs Owners")]),t._v(" "),e("p",[t._v("Adding readers to the object allows access to the object’s data, but the repository will not allow a reader to overwrite or delete an object.")]),t._v(" "),e("p",[t._v("To assign a reader:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Assigns the Public Key of the first contact of the logged in user as a reader")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("addReader")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("pk"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("An object may have multiple owners and multiple readers.")]),t._v(" "),e("h2",{attrs:{id:"controlling-read-access"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#controlling-read-access"}},[t._v("#")]),t._v(" Controlling read access")]),t._v(" "),e("p",[t._v("In our security model, no actor should trust the repository. So, revoking read access involves encrypting the object.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" e "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcEncryptedValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("toEncryptedValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Note that this retains and exposes some information about the person object to the repository owner to enable "),e("RouterLink",{attrs:{to:"/dev/fundamentals/search/"}},[t._v("Search")]),t._v(": The name of the object and the object type are retained. If you would like to remove those, that’s quite alright, but it removes the ability to search by those fields. If you would like to retain any additional fields, you may copy them from the unencrypted object to the encrypted object. This will enable search by those fields (and expose them to the repository owner).")],1),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v(" e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("delete")]),t._v(" e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("encryptedType"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("To test the effects of encryption, we need to save the object and temporarily remove our identity to see that the object is no longer accessible. The repository protects encrypted objects from discovery, and the encryption protects the object against the repository owner (or server compromise).")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" repo"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" myIds "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Saving our identities elsewhere.")]),t._v("\nEcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Removing them from the expected location.")]),t._v("\nEcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cache "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Clearing the cache.")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Not found")]),t._v("\nEcIdentityManager"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myIds"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Found!")]),t._v("\n")])])]),e("p",[t._v("Now we can decrypt the object and see it is intact.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" p "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Person")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Decrypt it and cast it into the appropriate object.")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("copyFrom")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcEncryptedValue"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("fromEcnryptedValue")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("e"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"saving-and-retrieving-objects"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#saving-and-retrieving-objects"}},[t._v("#")]),t._v(" Saving and Retrieving objects")]),t._v(" "),e("p",[t._v("An object with an ID can be saved and retrieved. Saving can be done using "),e("code",[t._v("EcRepository")]),t._v(". It's as easy as:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Retrieving an object using EcRepository it is a bit more complex due to issues with casting. All objects returned from EcRepository methods are of the EcRemoteLinkedData type and should be cast into their desired type before use. This can be done using the following pattern: First, get the object:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Alternatively,")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("Then, it needs to be “"),e("em",[t._v("cast")]),t._v("” into the desired object.")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("Person")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\np"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("copyFrom")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("All properties of the object are accessible from its "),e("em",[t._v("EcRemoteLinkedData")]),t._v(" data form ‘r’, however, helper functions that exist in the object won’t be available. This is particularly useful for "),e("code",[t._v("Competency -> EcCompetency")]),t._v(", "),e("code",[t._v("Framework -> EcFramework")]),t._v(", etc.")]),t._v(" "),e("h2",{attrs:{id:"versioning"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#versioning"}},[t._v("#")]),t._v(" Versioning")]),t._v(" "),e("p",[t._v("Upon save, an object’s version number (the last segment of the "),e("code",[t._v("@id")]),t._v(") is set to "),e("em",[t._v("the current UTC timestamp in milliseconds")]),t._v(". This can be used as a last-modified indicator as well as a version number. Versions of an object other than the latest are not discoverable unless they are linked from other objects.")]),t._v(" "),e("p",[t._v("Versions of objects exist to allow for immutable referencing of an object. As an example, if a person answers a question, it is relevant that they answered a particular version of a question with a particular version of an answer.")]),t._v(" "),e("p",[t._v("To access the identifier with the version number included:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("p",[t._v("To access the identifier that pertains to the latest version of the object:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),e("h2",{attrs:{id:"validating-an-object"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#validating-an-object"}},[t._v("#")]),t._v(" Validating an object")]),t._v(" "),e("p",[t._v("You may validate one or more signatures against one or more owners using the following:")]),t._v(" "),e("div",{staticClass:"language-js extra-class"},[e("pre",{pre:!0,attrs:{class:"language-js"}},[e("code",[t._v("p"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("verify")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Returns whether the object is valid.")]),t._v("\n")])])]),e("h2",{attrs:{id:"controller-coming-soon"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#controller-coming-soon"}},[t._v("#")]),t._v(" Controller (Coming Soon)")]),t._v(" "),e("p",[t._v("A controller is allowed to modify who can read the object, but not any other information.")]),t._v(" "),e("h2",{attrs:{id:"guidelines"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#guidelines"}},[t._v("#")]),t._v(" Guidelines")]),t._v(" "),e("p",[t._v("In building any custom implementation, we recommend the following:")]),t._v(" "),e("ul",[e("li",[t._v("Keep objects as flat as possible, and refer to other objects via their ID. This promotes data reuse.")]),t._v(" "),e("li",[t._v("All objects should be owned by the person who created the data. There should be a separate owner for each level of organizational hierarchy ("),e("em",[t._v("e.g. person, school, school district, state")]),t._v(").")]),t._v(" "),e("li",[t._v("All objects should be readable by the people to whom the data pertains. If no keys exist for that person, it is acceptable to create keys on their behalf and give them the private portion upon next interaction (or email them).")]),t._v(" "),e("li",[t._v("Any objects containing personally identifiable information should be read-restricted unless the subject of the data wishes it to be public. This not only follows privacy laws such as FERPA, but it is also a common courtesy.")]),t._v(" "),e("li",[t._v("To enable research, any non-personally identifiable information should be publicly discoverable and accessible.")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/68.adda27fd.js.gz b/docs/assets/js/68.adda27fd.js.gz new file mode 100644 index 000000000..2a7003572 Binary files /dev/null and b/docs/assets/js/68.adda27fd.js.gz differ diff --git a/docs/assets/js/69.e8168565.js b/docs/assets/js/69.9e842d2a.js similarity index 99% rename from docs/assets/js/69.e8168565.js rename to docs/assets/js/69.9e842d2a.js index 1ad77af7c..4539c5d5e 100644 --- a/docs/assets/js/69.e8168565.js +++ b/docs/assets/js/69.9e842d2a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{690:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"assertion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#assertion"}},[t._v("#")]),t._v(" Assertion")]),t._v(" "),s("blockquote",[s("p",[t._v("An "),s("strong",[t._v("Assertion")]),t._v(" is a declaration by one party that another party can perform a competency at a level with some confidence, made at a point in time, limited to some timespan, and backed up by the attached evidence.")])]),t._v(" "),s("p",[t._v("Some examples are:")]),t._v(" "),s("blockquote",[s("ul",[s("li",[t._v("A test taking application asks an individual a question and they get the question right. The question is associated with a competency. The application makes an assertion that the individual can perform the competency associated with the question for one month, and attaches both the question and answer as evidence.")]),t._v(" "),s("li",[t._v("A supervisor observes a worker tig welding two pieces of metal together. The supervisor asserts that the worker is competent in TIG welding for six months, and attaches both a picture of the weld and a video of the worker welding as evidence.")]),t._v(" "),s("li",[t._v("An individual asserts that they are able to add two two-digit numbers, and attaches a picture of a piece of paper showing the work.")])])]),t._v(" "),s("p",[t._v("Assertions of competence are sensitive pieces of information, as they record the capabilities of an individual. Under law in the United States, this classifies them in certain cases as Educational Data and subjects them to privacy law. Many of the security and privacy features of CASS were developed to protect this data.")]),t._v(" "),s("p",[t._v("CASS Assertions use the following patterns to facilitate that protection:")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("strong",[t._v("Agent")]),t._v(" (creator of the assertion) will own the assertion.")]),t._v(" "),s("li",[t._v("The "),s("strong",[t._v("Subject")]),t._v(" of the assertion will be able to read the assertion.")]),t._v(" "),s("li",[t._v("All "),s("em",[t._v("Personally-Identifiable Information")]),t._v(" (PII) will be read restricted to these two parties.\n"),s("ul",[s("li",[t._v("Parties may be given read permission by the subject by including the assertion in an Assertion Envelope, which provides security credentials to a third party.")])])]),t._v(" "),s("li",[t._v("All non-identifying information will be publicly accessible for use in statistics.")])]),t._v(" "),s("p",[t._v("To learn more about frameworks, competencies, and assertions, visit the "),s("RouterLink",{attrs:{to:"/guide/overview/"}},[t._v("CASS Overview")]),t._v(".")],1),t._v(" "),s("h2",{attrs:{id:"creation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),s("p",[t._v("Because encryption occurs during the creation of the assertion, it is necessary to follow a strict order of operations when creating an Assertion.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" agent "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" subject "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively, use this if you do not have any contacts in your Identity Manager")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" subject "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" agent"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAssertion")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("agent"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSubject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("subject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setAgent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("agent"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Competency/6bcb0d3f-fa6b-4aa2-b111-92ddecb9a2a8"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLevel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Level/99efb8ee-e04d-44df-9a33-8da28bb889e9"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setConfidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.85")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// How confident, from 0-1, is the agent in this assertion?")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setAssertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Date"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("now")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// UTC Milliseconds")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setExpirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Date"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("now")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("60")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("60")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// UTC Milliseconds, 30 days in the future.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDecayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"t"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Decays linearly with time. Could also be t^2 or sqrt(t)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setNegative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// This is an assertion that an individual *can* do something, not that they *cannot*.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEvidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I saw them do it."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// An array of evidence is required. Any string (URLs for instance) will do.")]),t._v("\n")])])]),s("p",[t._v("It is worthwhile to examine the object to see what fields are protected and what fields are not. The choices were made to protect the subject of the assertion, not the agent of the assertion.")]),t._v(" "),s("h2",{attrs:{id:"examining-the-security-mechanisms"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examining-the-security-mechanisms"}},[t._v("#")]),t._v(" Examining the security mechanisms")]),t._v(" "),s("p",[t._v("Similar to the Working with Objects section, we will examine the security and privacy mechanisms in place. Run each of these blocks of code independently.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" myIds "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Saving our identities elsewhere.")]),t._v("\nEcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Removing them from the expected location.")]),t._v("\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cache "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Clearing the cache.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Limited Data")]),t._v("\n\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cache "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Clearing the cache.")]),t._v("\nEcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myIds"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Restore our identities")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Full Data")]),t._v("\n")])])]),s("p",[t._v("What should be apparent is that read restricted data is not returned by the server, even if it is a field in an object, without appropriate identification.")]),t._v(" "),s("h2",{attrs:{id:"reading"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reading"}},[t._v("#")]),t._v(" Reading")]),t._v(" "),s("p",[t._v("Because decryption is a component of reading an assertion, both synchronous and asynchronous versions of each read method exist.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Synchronous Reading")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAssertion")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("copyFrom")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("level"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("confidence"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// These getters automatically decrypt the data.")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgentName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Retrieves the agent’s name from EcIdentityManager, if available.")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubjectName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNegative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAssertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getExpirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDecayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidenceCount")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("All asynchronous versions have success and failure callbacks.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Asynchronous Reading")]),t._v("\n\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgentAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("agent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// These getters automatically decrypt the data.")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgentNameAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("agentName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Retrieves the agent’s name from EcIdentityManager, ifavailable.")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("subject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubjectName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("subjectName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNegative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("negative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAssertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("assertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getExpirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("expirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDecayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("decayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidenceCount")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("evidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"save"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),s("p",[t._v("EcAssertion has a helper method that validates expected fields before saving.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),s("p",[t._v("EcAssertion has a static helper method for retrieving an assertion and casting it to the EcAssertion object.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcAssertion"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("competency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("p",[t._v("EcAssertion has a static helper method for searching for Competencies.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for competencies")]),t._v("\nEcAssertion"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAssertions")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 competencies that have perfect confidence")]),t._v("\nEcAssertion"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"confidence:1.0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAssertions")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{689:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"assertion"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#assertion"}},[t._v("#")]),t._v(" Assertion")]),t._v(" "),s("blockquote",[s("p",[t._v("An "),s("strong",[t._v("Assertion")]),t._v(" is a declaration by one party that another party can perform a competency at a level with some confidence, made at a point in time, limited to some timespan, and backed up by the attached evidence.")])]),t._v(" "),s("p",[t._v("Some examples are:")]),t._v(" "),s("blockquote",[s("ul",[s("li",[t._v("A test taking application asks an individual a question and they get the question right. The question is associated with a competency. The application makes an assertion that the individual can perform the competency associated with the question for one month, and attaches both the question and answer as evidence.")]),t._v(" "),s("li",[t._v("A supervisor observes a worker tig welding two pieces of metal together. The supervisor asserts that the worker is competent in TIG welding for six months, and attaches both a picture of the weld and a video of the worker welding as evidence.")]),t._v(" "),s("li",[t._v("An individual asserts that they are able to add two two-digit numbers, and attaches a picture of a piece of paper showing the work.")])])]),t._v(" "),s("p",[t._v("Assertions of competence are sensitive pieces of information, as they record the capabilities of an individual. Under law in the United States, this classifies them in certain cases as Educational Data and subjects them to privacy law. Many of the security and privacy features of CASS were developed to protect this data.")]),t._v(" "),s("p",[t._v("CASS Assertions use the following patterns to facilitate that protection:")]),t._v(" "),s("ul",[s("li",[t._v("The "),s("strong",[t._v("Agent")]),t._v(" (creator of the assertion) will own the assertion.")]),t._v(" "),s("li",[t._v("The "),s("strong",[t._v("Subject")]),t._v(" of the assertion will be able to read the assertion.")]),t._v(" "),s("li",[t._v("All "),s("em",[t._v("Personally-Identifiable Information")]),t._v(" (PII) will be read restricted to these two parties.\n"),s("ul",[s("li",[t._v("Parties may be given read permission by the subject by including the assertion in an Assertion Envelope, which provides security credentials to a third party.")])])]),t._v(" "),s("li",[t._v("All non-identifying information will be publicly accessible for use in statistics.")])]),t._v(" "),s("p",[t._v("To learn more about frameworks, competencies, and assertions, visit the "),s("RouterLink",{attrs:{to:"/guide/overview/"}},[t._v("CASS Overview")]),t._v(".")],1),t._v(" "),s("h2",{attrs:{id:"creation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),s("p",[t._v("Because encryption occurs during the creation of the assertion, it is necessary to follow a strict order of operations when creating an Assertion.")])]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" agent "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" subject "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("contacts"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("pk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively, use this if you do not have any contacts in your Identity Manager")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" subject "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" agent"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAssertion")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("agent"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setSubject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("subject"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setAgent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("agent"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Competency/6bcb0d3f-fa6b-4aa2-b111-92ddecb9a2a8"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setLevel")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Level/99efb8ee-e04d-44df-9a33-8da28bb889e9"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setConfidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.85")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// How confident, from 0-1, is the agent in this assertion?")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setAssertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Date"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("now")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// UTC Milliseconds")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setExpirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Date"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("now")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("+")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("60")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("60")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("24")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("*")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// UTC Milliseconds, 30 days in the future.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setDecayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"t"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Decays linearly with time. Could also be t^2 or sqrt(t)")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setNegative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("false")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// This is an assertion that an individual *can* do something, not that they *cannot*.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("setEvidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I saw them do it."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// An array of evidence is required. Any string (URLs for instance) will do.")]),t._v("\n")])])]),s("p",[t._v("It is worthwhile to examine the object to see what fields are protected and what fields are not. The choices were made to protect the subject of the assertion, not the agent of the assertion.")]),t._v(" "),s("h2",{attrs:{id:"examining-the-security-mechanisms"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#examining-the-security-mechanisms"}},[t._v("#")]),t._v(" Examining the security mechanisms")]),t._v(" "),s("p",[t._v("Similar to the Working with Objects section, we will examine the security and privacy mechanisms in place. Run each of these blocks of code independently.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" myIds "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Saving our identities elsewhere.")]),t._v("\nEcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Removing them from the expected location.")]),t._v("\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cache "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Clearing the cache.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Limited Data")]),t._v("\n\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cache "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Clearing the cache.")]),t._v("\nEcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" myIds"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Restore our identities")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Full Data")]),t._v("\n")])])]),s("p",[t._v("What should be apparent is that read restricted data is not returned by the server, even if it is a field in an object, without appropriate identification.")]),t._v(" "),s("h2",{attrs:{id:"reading"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reading"}},[t._v("#")]),t._v(" Reading")]),t._v(" "),s("p",[t._v("Because decryption is a component of reading an assertion, both synchronous and asynchronous versions of each read method exist.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Synchronous Reading")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" a "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAssertion")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("copyFrom")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("level"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("confidence"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// These getters automatically decrypt the data.")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgentName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Retrieves the agent’s name from EcIdentityManager, if available.")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubjectName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNegative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAssertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getExpirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDecayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidenceCount")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nconsole"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("log")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("p",[t._v("All asynchronous versions have success and failure callbacks.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Asynchronous Reading")]),t._v("\n\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgentAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("agent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// These getters automatically decrypt the data.")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAgentNameAsync")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("agentName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Retrieves the agent’s name from EcIdentityManager, ifavailable.")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("subject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getSubjectName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("subjectName")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getNegative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("negative")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getAssertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("assertionDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getExpirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("expirationDate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getDecayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("decayFunction")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidenceCount")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\na"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("getEvidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("evidence")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"save"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),s("p",[t._v("EcAssertion has a helper method that validates expected fields before saving.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("a"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"get"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),s("p",[t._v("EcAssertion has a static helper method for retrieving an assertion and casting it to the EcAssertion object.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[t._v("EcAssertion"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("competency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("h2",{attrs:{id:"search"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),s("p",[t._v("EcAssertion has a static helper method for searching for Competencies.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for competencies")]),t._v("\nEcAssertion"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAssertions")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 competencies that have perfect confidence")]),t._v("\nEcAssertion"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"confidence:1.0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcAssertions")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/69.9e842d2a.js.gz b/docs/assets/js/69.9e842d2a.js.gz new file mode 100644 index 000000000..6bd487707 Binary files /dev/null and b/docs/assets/js/69.9e842d2a.js.gz differ diff --git a/docs/assets/js/69.e8168565.js.gz b/docs/assets/js/69.e8168565.js.gz deleted file mode 100644 index 24f542acc..000000000 Binary files a/docs/assets/js/69.e8168565.js.gz and /dev/null differ diff --git a/docs/assets/js/70.f56142e8.js b/docs/assets/js/70.f097127b.js similarity index 99% rename from docs/assets/js/70.f56142e8.js rename to docs/assets/js/70.f097127b.js index d7caaa811..af54b8790 100644 --- a/docs/assets/js/70.f56142e8.js +++ b/docs/assets/js/70.f097127b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{692:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"competency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#competency"}},[t._v("#")]),t._v(" Competency")]),t._v(" "),a("blockquote",[a("p",[t._v("A "),a("strong",[t._v("Competency")]),t._v(" is a discrete unit of competence, and is represented in CASS as an object labelled with a name, description, and other data.")])]),t._v(" "),a("p",[t._v("Examples of competencies:")]),t._v(" "),a("blockquote",[a("ul",[a("li",[t._v("Running")]),t._v(" "),a("li",[t._v("Adding two numbers with two digits each")]),t._v(" "),a("li",[t._v("Repairing a solder joint")]),t._v(" "),a("li",[t._v("Installing a CASS Repository on a server")])])]),t._v(" "),a("p",[t._v("Competencies most commonly exist within a context such as an educational framework, a job role or title, or a knowledge domain. While it is possible to remove a well-described competency from this context, the context helps define the competency. There can be significant information lost when a competency is referenced outside of its framework.")]),t._v(" "),a("p",[t._v("To learn more about frameworks or competencies, visit the "),a("RouterLink",{attrs:{to:"/guide/overview/"}},[t._v("CASS Overview")]),t._v(".")],1),t._v(" "),a("p",[t._v("CASS Competencies are objects distinct of the frameworks in which they exist and the relations that connect them to one another. Each Competency is referred to by a URL which acts both as a unique identifier and a locator for the data that describes the competency.")]),t._v(" "),a("h2",{attrs:{id:"creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),a("p",[t._v("The CASS Libraries include a competency helper object that extends Competency with additional methods.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The ability of a creature to ambulate with such rapidity that more than half of the limbs involved do not touch the ground at some point in the motion."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-competency-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-competency-to-a-framework"}},[t._v("#")]),t._v(" Adding a Competency to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the competency such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add this particular version of the competency")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or competency.")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-competency-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-competency-from-a-framework"}},[t._v("#")]),t._v(" Removing a Competency from a Framework")]),t._v(" "),a("p",[t._v("This method will also remove relations that involve the competency and levels that refer to the competency.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Can also use c.shortId()")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the competency.")]),t._v("\n")])])]),a("h2",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),a("p",[t._v("EcCompetency has a helper method that validates expected fields before saving.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("EcCompetency has a helper method that deletes the competency. This does NOT DELETE any objects that reference the competency.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),a("p",[t._v("EcCompetency has a static helper method for retrieving a Competency, automatically decrypting it, automatically encrypting it on save, and casting it to the EcCompetency object. The blocking version locks the thread while this occurs.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("competency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"search"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),a("p",[t._v("EcCompetency has a static helper method for searching for Competencies.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for competencies")]),t._v("\nEcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcCompetencies")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 competencies that have “Workforce” in the name.")]),t._v("\nEcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name:Workforce"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ElasticSearch Query string")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcCompetencies")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{691:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"competency"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#competency"}},[t._v("#")]),t._v(" Competency")]),t._v(" "),a("blockquote",[a("p",[t._v("A "),a("strong",[t._v("Competency")]),t._v(" is a discrete unit of competence, and is represented in CASS as an object labelled with a name, description, and other data.")])]),t._v(" "),a("p",[t._v("Examples of competencies:")]),t._v(" "),a("blockquote",[a("ul",[a("li",[t._v("Running")]),t._v(" "),a("li",[t._v("Adding two numbers with two digits each")]),t._v(" "),a("li",[t._v("Repairing a solder joint")]),t._v(" "),a("li",[t._v("Installing a CASS Repository on a server")])])]),t._v(" "),a("p",[t._v("Competencies most commonly exist within a context such as an educational framework, a job role or title, or a knowledge domain. While it is possible to remove a well-described competency from this context, the context helps define the competency. There can be significant information lost when a competency is referenced outside of its framework.")]),t._v(" "),a("p",[t._v("To learn more about frameworks or competencies, visit the "),a("RouterLink",{attrs:{to:"/guide/overview/"}},[t._v("CASS Overview")]),t._v(".")],1),t._v(" "),a("p",[t._v("CASS Competencies are objects distinct of the frameworks in which they exist and the relations that connect them to one another. Each Competency is referred to by a URL which acts both as a unique identifier and a locator for the data that describes the competency.")]),t._v(" "),a("h2",{attrs:{id:"creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),a("p",[t._v("The CASS Libraries include a competency helper object that extends Competency with additional methods.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The ability of a creature to ambulate with such rapidity that more than half of the limbs involved do not touch the ground at some point in the motion."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-competency-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-competency-to-a-framework"}},[t._v("#")]),t._v(" Adding a Competency to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the competency such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add this particular version of the competency")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or competency.")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-competency-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-competency-from-a-framework"}},[t._v("#")]),t._v(" Removing a Competency from a Framework")]),t._v(" "),a("p",[t._v("This method will also remove relations that involve the competency and levels that refer to the competency.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Can also use c.shortId()")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the competency.")]),t._v("\n")])])]),a("h2",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),a("p",[t._v("EcCompetency has a helper method that validates expected fields before saving.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("EcCompetency has a helper method that deletes the competency. This does NOT DELETE any objects that reference the competency.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),a("p",[t._v("EcCompetency has a static helper method for retrieving a Competency, automatically decrypting it, automatically encrypting it on save, and casting it to the EcCompetency object. The blocking version locks the thread while this occurs.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("competency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"search"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),a("p",[t._v("EcCompetency has a static helper method for searching for Competencies.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for competencies")]),t._v("\nEcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcCompetencies")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 competencies that have “Workforce” in the name.")]),t._v("\nEcCompetency"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name:Workforce"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ElasticSearch Query string")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcCompetencies")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Success")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("error")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Failure")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/70.f097127b.js.gz b/docs/assets/js/70.f097127b.js.gz new file mode 100644 index 000000000..a7830619e Binary files /dev/null and b/docs/assets/js/70.f097127b.js.gz differ diff --git a/docs/assets/js/70.f56142e8.js.gz b/docs/assets/js/70.f56142e8.js.gz deleted file mode 100644 index 1f465afd3..000000000 Binary files a/docs/assets/js/70.f56142e8.js.gz and /dev/null differ diff --git a/docs/assets/js/71.fc6d9dca.js b/docs/assets/js/71.5a55973e.js similarity index 99% rename from docs/assets/js/71.fc6d9dca.js rename to docs/assets/js/71.5a55973e.js index 15e7f3272..36ea5d81e 100644 --- a/docs/assets/js/71.fc6d9dca.js +++ b/docs/assets/js/71.5a55973e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{691:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#framework"}},[t._v("#")]),t._v(" Framework")]),t._v(" "),a("blockquote",[a("p",[t._v("A "),a("strong",[t._v("Competency Framework")]),t._v(" is a structured collection of competencies.")])]),t._v(" "),a("p",[t._v("Examples of Competency Frameworks:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://www.onetonline.org/find/descriptor/browse/Abilities/",target:"_blank",rel:"noopener noreferrer"}},[t._v("O*NET Abilities"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"http://asn.desire2learn.com/resources/D2695955",target:"_blank",rel:"noopener noreferrer"}},[t._v("ASN’s Competency Index for Linked Data"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("Frameworks are typically found in PDFs, Word Docs, spreadsheets, and other formats, schemata, etc. To learn more about frameworks or competencies, visit the "),a("RouterLink",{attrs:{to:"/guide/overview/"}},[t._v("CASS Overview")]),t._v(".")],1),t._v(" "),a("p",[t._v("CASS can represent any competency framework as a CASS Framework.")]),t._v(" "),a("p",[t._v("A CASS Framework is a directed graph of competencies, the relations among them, and the criterion used to judge individual skill level at those competencies. It is easiest to think of a framework as containing competencies as nodes, relations as edges, and additional information in the form of levels and rollup rules.")]),t._v(" "),a("p",[t._v("Additionally, a CASS Framework does not contain objects, it merely contains references to objects. It may contain versioned references or unversioned references. By default, all operations create unversioned references which refer to the latest version.")]),t._v(" "),a("p",[t._v("You will notice that all references to competencies, relations, and other objects are represented as URLs. This allows frameworks to refer to competencies in the same repository, in a different framework, or on a different repository.")]),t._v(" "),a("p",[t._v("When processing (for instance, determining if a person holds a competency), you will use Frameworks to contextualize the process, bounding the problem to a set of competencies and relations. This is done both to make processing operate in a reasonable amount of time, and to prevent abuse by individuals who make bogus frameworks and relations.")]),t._v(" "),a("h2",{attrs:{id:"creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),a("p",[t._v("The CASS Libraries include a framework helper object that extends Framework with additional methods.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" f "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcFramework")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-competency-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-competency-to-a-framework"}},[t._v("#")]),t._v(" Adding a Competency to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the competency such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add this particular version of the competency")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or competency!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-competency-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-competency-from-a-framework"}},[t._v("#")]),t._v(" Removing a Competency from a Framework")]),t._v(" "),a("p",[t._v("This method will also remove relations that involve the competency and levels that refer to the competency.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Can also use c.shortId()")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the competency!")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-relation-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-relation-to-a-framework"}},[t._v("#")]),t._v(" Adding a Relation to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAlignment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Yes, I know. It’s not EcRelation. Coming soon.")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("target "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relationType "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Relation"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("NARROWS")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRelation")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Don’t forget to save these objects!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-relation-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-relation-from-a-framework"}},[t._v("#")]),t._v(" Removing a Relation from a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeRelation")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save!")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-level-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-level-to-a-framework"}},[t._v("#")]),t._v(" Adding a Level to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10 mph"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The individual can run 10 miles per hour for several seconds."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Runner"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Add the level such that it will update automatically")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Add the level such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-level-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-level-from-a-framework"}},[t._v("#")]),t._v(" Removing a Level from a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the level!")]),t._v("\n")])])]),a("h2",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),a("p",[t._v("EcFramework has a helper method that validates expected fields before saving.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("EcFramework has a helper method that deletes the framework. This does "),a("strong",[t._v("not delete")]),t._v(" any objects referenced by the framework.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),a("p",[t._v("EcFramework has a static helper method for retrieving a Framework, automatically decrypting it, automatically encrypting it on save, and casting it to the EcFramework object. The await version locks the thread while this occurs.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("or")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" f "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"search"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),a("p",[t._v("EcFramework has a static helper method for searching for Frameworks.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for frameworks")]),t._v("\nEcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcFrameworks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 frameworks that have “Workforce” in the name.")]),t._v("\nEcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name:Workforce"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcFrameworks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{692:function(t,a,s){"use strict";s.r(a);var n=s(69),e=Object(n.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#framework"}},[t._v("#")]),t._v(" Framework")]),t._v(" "),a("blockquote",[a("p",[t._v("A "),a("strong",[t._v("Competency Framework")]),t._v(" is a structured collection of competencies.")])]),t._v(" "),a("p",[t._v("Examples of Competency Frameworks:")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"https://www.onetonline.org/find/descriptor/browse/Abilities/",target:"_blank",rel:"noopener noreferrer"}},[t._v("O*NET Abilities"),a("OutboundLink")],1)]),t._v(" "),a("li",[a("a",{attrs:{href:"http://asn.desire2learn.com/resources/D2695955",target:"_blank",rel:"noopener noreferrer"}},[t._v("ASN’s Competency Index for Linked Data"),a("OutboundLink")],1)])]),t._v(" "),a("p",[t._v("Frameworks are typically found in PDFs, Word Docs, spreadsheets, and other formats, schemata, etc. To learn more about frameworks or competencies, visit the "),a("RouterLink",{attrs:{to:"/guide/overview/"}},[t._v("CASS Overview")]),t._v(".")],1),t._v(" "),a("p",[t._v("CASS can represent any competency framework as a CASS Framework.")]),t._v(" "),a("p",[t._v("A CASS Framework is a directed graph of competencies, the relations among them, and the criterion used to judge individual skill level at those competencies. It is easiest to think of a framework as containing competencies as nodes, relations as edges, and additional information in the form of levels and rollup rules.")]),t._v(" "),a("p",[t._v("Additionally, a CASS Framework does not contain objects, it merely contains references to objects. It may contain versioned references or unversioned references. By default, all operations create unversioned references which refer to the latest version.")]),t._v(" "),a("p",[t._v("You will notice that all references to competencies, relations, and other objects are represented as URLs. This allows frameworks to refer to competencies in the same repository, in a different framework, or on a different repository.")]),t._v(" "),a("p",[t._v("When processing (for instance, determining if a person holds a competency), you will use Frameworks to contextualize the process, bounding the problem to a set of competencies and relations. This is done both to make processing operate in a reasonable amount of time, and to prevent abuse by individuals who make bogus frameworks and relations.")]),t._v(" "),a("h2",{attrs:{id:"creation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creation"}},[t._v("#")]),t._v(" Creation")]),t._v(" "),a("p",[t._v("The CASS Libraries include a framework helper object that extends Framework with additional methods.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" f "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcFramework")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-competency-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-competency-to-a-framework"}},[t._v("#")]),t._v(" Adding a Competency to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the competency such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Alternatively...")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add this particular version of the competency")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or competency!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-competency-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-competency-from-a-framework"}},[t._v("#")]),t._v(" Removing a Competency from a Framework")]),t._v(" "),a("p",[t._v("This method will also remove relations that involve the competency and levels that refer to the competency.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Can also use c.shortId()")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the competency!")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-relation-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-relation-to-a-framework"}},[t._v("#")]),t._v(" Adding a Relation to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 1"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Competency 2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" r "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcAlignment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Yes, I know. It’s not EcRelation. Coming soon.")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("source "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("target "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nr"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("relationType "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Relation"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("NARROWS")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addRelation")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Don’t forget to save these objects!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-relation-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-relation-from-a-framework"}},[t._v("#")]),t._v(" Removing a Relation from a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeRelation")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("r"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save!")]),t._v("\n")])])]),a("h2",{attrs:{id:"adding-a-level-to-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-a-level-to-a-framework"}},[t._v("#")]),t._v(" Adding a Level to a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Running"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" l "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("competency "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"10 mph"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"The individual can run 10 miles per hour for several seconds."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nl"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("title "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Runner"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Add the level such that it will update automatically")]),t._v("\nf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("addLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("//Add the level such that it will update automatically")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save!")]),t._v("\n")])])]),a("h2",{attrs:{id:"removing-a-level-from-a-framework"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#removing-a-level-from-a-framework"}},[t._v("#")]),t._v(" Removing a Level from a Framework")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("removeLevel")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("l"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Don’t forget to save the framework and/or delete the level!")]),t._v("\n")])])]),a("h2",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" Save")]),t._v(" "),a("p",[t._v("EcFramework has a helper method that validates expected fields before saving.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"delete"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[t._v("#")]),t._v(" Delete")]),t._v(" "),a("p",[t._v("EcFramework has a helper method that deletes the framework. This does "),a("strong",[t._v("not delete")]),t._v(" any objects referenced by the framework.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("_delete")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("success")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"get"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get"}},[t._v("#")]),t._v(" Get")]),t._v(" "),a("p",[t._v("EcFramework has a static helper method for retrieving a Framework, automatically decrypting it, automatically encrypting it on save, and casting it to the EcFramework object. The await version locks the thread while this occurs.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("EcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("framework")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("p",[t._v("or")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" f "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" EcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("get")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("url"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),a("h2",{attrs:{id:"search"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#search"}},[t._v("#")]),t._v(" Search")]),t._v(" "),a("p",[t._v("EcFramework has a static helper method for searching for Frameworks.")]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for frameworks")]),t._v("\nEcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcFrameworks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Searches for up to 5000 frameworks that have “Workforce” in the name.")]),t._v("\nEcFramework"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("search")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n repo"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"name:Workforce"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("arrayOfEcFrameworks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("failure")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("size")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/71.fc6d9dca.js.gz b/docs/assets/js/71.5a55973e.js.gz similarity index 97% rename from docs/assets/js/71.fc6d9dca.js.gz rename to docs/assets/js/71.5a55973e.js.gz index 4fcdb40a7..e71366301 100644 Binary files a/docs/assets/js/71.fc6d9dca.js.gz and b/docs/assets/js/71.5a55973e.js.gz differ diff --git a/docs/assets/js/73.8b12b22e.js b/docs/assets/js/73.ffded894.js similarity index 86% rename from docs/assets/js/73.8b12b22e.js rename to docs/assets/js/73.ffded894.js index a579701e0..9c03238ae 100644 --- a/docs/assets/js/73.8b12b22e.js +++ b/docs/assets/js/73.ffded894.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{694:function(t,s,l){"use strict";l.r(s);var r=l(69),e=Object(r.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"rolluprule"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rolluprule"}},[this._v("#")]),this._v(" RollupRule")]),this._v(" "),t("p",[this._v("TODO")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{695:function(t,s,l){"use strict";l.r(s);var r=l(69),e=Object(r.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"rolluprule"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rolluprule"}},[this._v("#")]),this._v(" RollupRule")]),this._v(" "),t("p",[this._v("TODO")])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/73.8b12b22e.js.gz b/docs/assets/js/73.ffded894.js.gz similarity index 81% rename from docs/assets/js/73.8b12b22e.js.gz rename to docs/assets/js/73.ffded894.js.gz index d3092c225..2c74a8d65 100644 Binary files a/docs/assets/js/73.8b12b22e.js.gz and b/docs/assets/js/73.ffded894.js.gz differ diff --git a/docs/assets/js/74.fa817b77.js b/docs/assets/js/74.6d1a7d1f.js similarity index 98% rename from docs/assets/js/74.fa817b77.js rename to docs/assets/js/74.6d1a7d1f.js index dccf6f871..ba66b76b8 100644 --- a/docs/assets/js/74.fa817b77.js +++ b/docs/assets/js/74.6d1a7d1f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{697:function(e,t,o){"use strict";o.r(t);var s=o(69),a=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("These pages describe the "),t("strong",[e._v("CaSS Repository")]),e._v(", an object repository used to store objects in CaSS. The CaSS repository stores objects as "),t("strong",[e._v("JSON-LD")]),e._v(" compatible with "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema.org"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://credreg.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CTDL"),t("OutboundLink")],1),e._v(". The objects stored in the CaSS repository include, but are not limited to:")]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Competencies and Competency Frameworks")]),e._v(" "),t("li",[e._v("Roll-up rules (relating competence in a target competency/performance level to competence in a set of other competencies/performance levels)")]),e._v(" "),t("li",[e._v("Performance levels (which are separate objects but are tied to specific competencies)")]),e._v(" "),t("li",[e._v("Competency Assertions (stating that individuals hold competencies at particular performance levels)")]),e._v(" "),t("li",[e._v("Alignment objects that associate resources with competencies")])])]),e._v(" "),t("p",[e._v("Future versions may also include an extended set of objects that applications can use to define competency-based goals and learning paths.")]),e._v(" "),t("p",[e._v("The CaSS repository implements and supports a security and authentication framework called "),t("RouterLink",{attrs:{to:"/dev/security/kbac-specification/"}},[e._v("Key-based Access Control (KBAC)")]),e._v(". Use of this framework is optional but is recommended for implementations that require security and and that enforce privacy policies. If objects are stored with security, then the repository enforces security rules around the use of the data.")],1),e._v(" "),t("p",[e._v("Permissions are set by the creator of a piece of data")]),e._v(" "),t("ul",[t("li",[e._v("If the data is created with no owner, then it has no rights and may freely be read, modified or deleted. No security rules are enforced for these objects.")]),e._v(" "),t("li",[e._v("If the data is created with one or more owners, then only the owners may modify or delete the data. Anyone may discover or read the data. This is the typical protection level of public data such as frameworks, competencies, etc.")]),e._v(" "),t("li",[e._v("If the data is encrypted, then only the owners or readers may discover or view the data, and only owners may modify or delete the data. Assertions and other learner data use this permission level heavily.")]),e._v(" "),t("li",[e._v("A server administrator may delete any piece of data.")])]),e._v(" "),t("p",[e._v("Specifically, these pages describe the specific REST web service APIs and business logic required to enable the repository to communicate over the internet.")]),e._v(" "),t("h2",{attrs:{id:"how-to-read-this-document"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-read-this-document"}},[e._v("#")]),e._v(" How to Read this Document")]),e._v(" "),t("p",[e._v("This document describes the existing CaSS Repository as a series of use cases or recipes and assumes understanding of KBAC, HTTP, JSON, JSON-LD, RSA Cryptography, and any other associated technologies. The steps and associated examples should be used when attempting to accomplish specific coding tasks.")]),e._v(" "),t("h2",{attrs:{id:"definitions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions"}},[e._v("#")]),e._v(" Definitions")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Object:")]),e._v(" A JSON-LD Object")]),e._v(" "),t("li",[t("strong",[e._v("Repository:")]),e._v(" The CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Endpoint:")]),e._v(" The domain name and additional URL path (if exists) to reach the CaSS Repository")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{696:function(e,t,o){"use strict";o.r(t);var s=o(69),a=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"overview"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview"}},[e._v("#")]),e._v(" Overview")]),e._v(" "),t("p",[e._v("These pages describe the "),t("strong",[e._v("CaSS Repository")]),e._v(", an object repository used to store objects in CaSS. The CaSS repository stores objects as "),t("strong",[e._v("JSON-LD")]),e._v(" compatible with "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema.org"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://credreg.net/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CTDL"),t("OutboundLink")],1),e._v(". The objects stored in the CaSS repository include, but are not limited to:")]),e._v(" "),t("blockquote",[t("ul",[t("li",[e._v("Competencies and Competency Frameworks")]),e._v(" "),t("li",[e._v("Roll-up rules (relating competence in a target competency/performance level to competence in a set of other competencies/performance levels)")]),e._v(" "),t("li",[e._v("Performance levels (which are separate objects but are tied to specific competencies)")]),e._v(" "),t("li",[e._v("Competency Assertions (stating that individuals hold competencies at particular performance levels)")]),e._v(" "),t("li",[e._v("Alignment objects that associate resources with competencies")])])]),e._v(" "),t("p",[e._v("Future versions may also include an extended set of objects that applications can use to define competency-based goals and learning paths.")]),e._v(" "),t("p",[e._v("The CaSS repository implements and supports a security and authentication framework called "),t("RouterLink",{attrs:{to:"/dev/security/kbac-specification/"}},[e._v("Key-based Access Control (KBAC)")]),e._v(". Use of this framework is optional but is recommended for implementations that require security and and that enforce privacy policies. If objects are stored with security, then the repository enforces security rules around the use of the data.")],1),e._v(" "),t("p",[e._v("Permissions are set by the creator of a piece of data")]),e._v(" "),t("ul",[t("li",[e._v("If the data is created with no owner, then it has no rights and may freely be read, modified or deleted. No security rules are enforced for these objects.")]),e._v(" "),t("li",[e._v("If the data is created with one or more owners, then only the owners may modify or delete the data. Anyone may discover or read the data. This is the typical protection level of public data such as frameworks, competencies, etc.")]),e._v(" "),t("li",[e._v("If the data is encrypted, then only the owners or readers may discover or view the data, and only owners may modify or delete the data. Assertions and other learner data use this permission level heavily.")]),e._v(" "),t("li",[e._v("A server administrator may delete any piece of data.")])]),e._v(" "),t("p",[e._v("Specifically, these pages describe the specific REST web service APIs and business logic required to enable the repository to communicate over the internet.")]),e._v(" "),t("h2",{attrs:{id:"how-to-read-this-document"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-read-this-document"}},[e._v("#")]),e._v(" How to Read this Document")]),e._v(" "),t("p",[e._v("This document describes the existing CaSS Repository as a series of use cases or recipes and assumes understanding of KBAC, HTTP, JSON, JSON-LD, RSA Cryptography, and any other associated technologies. The steps and associated examples should be used when attempting to accomplish specific coding tasks.")]),e._v(" "),t("h2",{attrs:{id:"definitions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#definitions"}},[e._v("#")]),e._v(" Definitions")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Object:")]),e._v(" A JSON-LD Object")]),e._v(" "),t("li",[t("strong",[e._v("Repository:")]),e._v(" The CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Endpoint:")]),e._v(" The domain name and additional URL path (if exists) to reach the CaSS Repository")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/74.6d1a7d1f.js.gz b/docs/assets/js/74.6d1a7d1f.js.gz new file mode 100644 index 000000000..794888d9c Binary files /dev/null and b/docs/assets/js/74.6d1a7d1f.js.gz differ diff --git a/docs/assets/js/74.fa817b77.js.gz b/docs/assets/js/74.fa817b77.js.gz deleted file mode 100644 index a055568f7..000000000 Binary files a/docs/assets/js/74.fa817b77.js.gz and /dev/null differ diff --git a/docs/assets/js/75.a205d544.js b/docs/assets/js/75.ed9e1c8f.js similarity index 99% rename from docs/assets/js/75.a205d544.js rename to docs/assets/js/75.ed9e1c8f.js index 641bd7489..874fbed18 100644 --- a/docs/assets/js/75.a205d544.js +++ b/docs/assets/js/75.ed9e1c8f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{696:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"create"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create"}},[t._v("#")]),t._v(" Create")]),t._v(" "),s("p",[s("em",[t._v("aka '"),s("strong",[t._v("PUT")]),t._v("'")])]),t._v(" "),s("p",[t._v("To store an object in a CaSS Repository:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ol",[s("li",[s("p",[t._v("Sign the object")]),t._v(" "),s("ul",[s("li",[t._v("Create a copy of the object.")]),t._v(" "),s("li",[t._v("Remove "),s("code",[t._v("@signature")]),t._v(", "),s("code",[t._v("@owner")]),t._v(", "),s("code",[t._v("@reader")]),t._v(", and "),s("code",[t._v("@id")]),t._v(" keys (and values) from the object.")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ul",[s("li",[t._v("Serialize the copy of the object in JSON format with the keys sorted in ASCII order and with no whitespace.")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("ul",[s("li",[t._v("Sign the serialized copy of the object using a SHA1 digest of the serialized data and RSA-2048 bit encryption with the user’s private key.")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("6>/Ê€o\")_Ì\nÖà±òj”´¼¬ùò<È(_ꪫÙTr³ßãÖxpbÚŽW #’ü¡ Ö8uµÔ×_pÀ:èûŸÛu38n·I8ùwo‹>^#ü Y”ÍS7ÇÍ=˜—ýÛ˜ñù:¹qûÎEÍRªõ1qkĹù^Äö-àːG9lj>ÿDr^“båØŠd3ç´ð¡›Ïžõ”7CÀ÷U3~+µ<ÏÃAÒ2Ï8س;¾XÁ‚‘\n¼­ç®Úwxá2T_.ÌðoÇ°'vè)#‘w…ŠíVŒÅ¾€â uü±¡‚2ì\n(...or something like that)\n")])])]),s("ul",[s("li",[t._v("Encode the signature using Base64.")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("Nj4vGMqAbyIpX4HMC9bgsfJqlLS8rPnyPMgoX+qqEKvZVHKz3+PWeHBi2o5XCSOS/KEgEtYFOHW11BbXXwZwwDro+5/bdTM4brdJOPl3B2+LPl4jDhj8IFmUzVM3x809mJf925gM8fk6uXH7zkXNUqr1MXFrxBy5+V7E9i0B4MuQFhpHOceJPv8YRHJeHZNi5dgZimQz57TwoZvPnvWUgRA3Q8D3VTN+K7U8z8NB0hkyzzjYPGunqJfEZh0pc5noftO/nBOV0zHiVT6zO75YwYKRBwq8reeu2nd44TJUXy7MD/Bvx7AndugpI5F3hYrtVowGxb6A4iB1/LGhggEy7A==\n")])])]),s("ul",[s("li",[t._v("Store the signature in the original object’s "),s("code",[t._v("@signature")]),t._v(" array (create it if it does not exist).")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Nj4vGMq...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("Add the owner to the object")]),t._v(" "),s("ul",[s("li",[t._v("Encode the owner’s public key (used to sign the object) in PEM format.\n"),s("ul",[s("li",[t._v("Specifically: X.509 SubjectPublicKeyInfo/OpenSSL PEM public key")]),t._v(" "),s("li",[t._v("This will begin with "),s("code",[t._v("-----BEGIN PUBLIC KEY-----")])])])]),t._v(" "),s("li",[t._v("Remove whitespace from the PEM encoded public key.")]),t._v(" "),s("li",[t._v("Add the owner to the object’s "),s("code",[t._v("@owner")]),t._v(" array.\n"),s("ul",[s("li",[t._v("Create the array if it does not exist.")])])])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBI...-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Nj4vGMq...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("To store the object, construct a url to "),s("code",[t._v("http(s)://///")])]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Endpoint:")]),t._v(" Endpoint of the CaSS Repository")]),t._v(" "),s("li",[s("strong",[t._v("Type:")]),t._v(" Type of the object in semi-reversed notation")]),t._v(" "),s("li",[s("strong",[t._v("Id:")]),t._v(" Identifier of the object. Randomly generate it if it does not exist.\n"),s("ul",[s("li",[t._v("This identifier may differ from the value stored in the object’s "),s("code",[t._v("@id")]),t._v(" field. This is used when registering data stored on another server.")]),t._v(" "),s("li",[t._v("For registering data retrieved from another server, a typical identifier for storage in CaSS is the MD5 hash of the "),s("code",[t._v("@id")]),t._v(" field.")])])]),t._v(" "),s("li",[s("strong",[t._v("Version:")]),t._v(" Numerical indicator of the version, typically a last modified time in unix format.")])])]),t._v(" "),s("li",[s("p",[t._v("Assign the object’s "),s("code",[t._v("@id")]),t._v(" to the url.")]),t._v(" "),s("ul",[s("li",[t._v("Update any version indicators to the last modified date, if necessary.")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/007c67a2-c3a1-4b38-b222-a47e3c6cef39/1461770282857"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBI...-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Nj4vGMq...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("Add the signed, owned object to the "),s("code",[t._v("data")]),t._v(" part of a multi-part POST package.")])]),t._v(" "),s("li",[s("p",[t._v("Create a signature.")]),t._v(" "),s("ul",[s("li",[t._v("Create an empty JSON object.")]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@context")]),t._v(" to "),s("code",[t._v("http://schema.eduworks.com/ebac/0.2/")])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@type")]),t._v(" to "),s("code",[t._v("http://schema.eduworks.com/ebac/0.2/timeLimitedSignature")])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("expiry")]),t._v(" to current unix time + time in milliseconds to allow the transaction to complete.\n"),s("ul",[s("li",[t._v("5 seconds should suffice")])])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("server")]),t._v(" to "),s("code",[t._v("http(s)://")])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@signature")]),t._v(" to:\n"),s("ul",[s("li",[t._v("Serialize the copy of the object in JSON format with the keys sorted in ASCII order and with no whitespace.")]),t._v(" "),s("li",[t._v("Sign the serialized copy of the object using a SHA1 digest and RSA-2048 bit encryption with the user’s private key.")]),t._v(" "),s("li",[t._v("Encode the signature using Base64.")]),t._v(" "),s("li",[t._v("Store the signature in the original object’s "),s("code",[t._v("@signature")]),t._v(" array.\n"),s("ul",[s("li",[t._v("Create the array if it does not exist.")])])])])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@owner")]),t._v(" to the PEM of the user.\n"),s("ul",[s("li",[t._v("Specifically: X.509 SubjectPublicKeyInfo/OpenSSL PEM public key")])])])])]),t._v(" "),s("li",[s("p",[t._v("Add the signature to an array, and set the “signatureSheet” part of the multi-part POST package to the array.")])])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/ebac/0.1/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eQOJt9...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"expiry"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1463525567195")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"server"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://sandbox.service.cassproject.org"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("ol",{attrs:{start:"8"}},[s("li",[t._v("POST the signatureSheet and data multi part mime files to the location in "),s("code",[t._v("@id")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"language-http extra-class"},[s("pre",{pre:!0,attrs:{class:"language-http"}},[s("code",[s("span",{pre:!0,attrs:{class:"token request-line"}},[s("span",{pre:!0,attrs:{class:"token method property"}},[t._v("POST")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token request-target url"}},[t._v("/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token http-version property"}},[t._v("HTTP/1.1")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Host")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("sandbox.service.cassproject.org")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Connection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("keep-alive")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Length")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("2485")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Accept")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("*/*")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Origin")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("https://sandbox.cassproject.org")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("User-Agent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("multipart/form-data; boundary=----WebKitFormBoundaryHPC2mTo2nsUWwL7V")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Referer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("https://sandbox.cassproject.org/cass.example/framework.html")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Accept-Encoding")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("gzip, deflate")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Accept-Language")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("en-US,en;q=0.8")])]),t._v("\n\n------WebKitFormBoundaryHPC2mTo2nsUWwL7V\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Disposition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v('form-data; name="data"')])]),t._v('\n\n{"@id":"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979","@owner":["-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhFIqjxOuV2UsVqqmknsjdSX5UOdjsCMHjXCRQ/CN+6W3p403AjewJiwacNyyosSWzzDc0w60GMMMY6ubSm0/hITlEgFmiA2g/26nCrHuSSMzoRIiql3apGnzxJsPkbHnn/uKXKlsWONMM4GYijQRNeXrFv+xNsl/Qzxdo4ND3FeTKXdWEu8JJXfKRXDo34RJYt/aSIUby0HYFVp/gUxXSBfYXU4rFLlSd4YwBfqNSiyEjCQUuXqko8FndAUbciMOxY+ko9IVM8R+k4gRlBhh5TR2a8B6o8ir38CGBvBkQZ635Nw/Ds+L6g5NbvUJofRC9gvfN5PD9Gr7GrQX//60eQIDAQAB-----END PUBLIC KEY-----"],"@context":"http://schema.eduworks.com/cass/0.1","@signature":["Uf/gevysprqTSsKUu5Oy/g+Ua6cSpkuZ3GDnUvq2PKBa4ucOR06XTq9GPBG21Q6AiNtqFPk+l635OpwkH3MlSR6jFJxGn+UYgC4XoKHSxkBaPX7Bzk1bVgE5EerI8MsVSfp6NmDkKKesoBcdnZa+JrZllfknZte4z2Zuu7OrEUZwI9L7b7mXfZJ62Isp4YIQI/cbhRnGHqN6noCZHXkdXwD3L1bNU7knLm6bM2+FOTVV9AO2y0IEAR3RKnWtF0tODBRbmkjGih2Ec68C1ZplIg2GmSz6iWZDqfk3/ZEvcGRkgEP7GhFk7wUw7oEuIOOecdWZI0uF/y04kN9435fSJg=="],"@type":"http://schema.eduworks.com/cass/0.1/framework","description":"This is an example of POSTing a new object.","name":"New Framework"}\n------WebKitFormBoundaryHPC2mTo2nsUWwL7V\n'),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Disposition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v('form-data; name="signatureSheet"')])]),t._v('\n\n[{"@owner":"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhFIqjxOuV2UsVqqmknsjdSX5UOdjsCMHjXCRQ/CN+6W3p403AjewJiwacNyyosSWzzDc0w60GMMMY6ubSm0/hITlEgFmiA2g/26nCrHuSSMzoRIiql3apGnzxJsPkbHnn/uKXKlsWONMM4GYijQRNeXrFv+xNsl/Qzxdo4ND3FeTKXdWEu8JJXfKRXDo34RJYt/aSIUby0HYFVp/gUxXSBfYXU4rFLlSd4YwBfqNSiyEjCQUuXqko8FndAUbciMOxY+ko9IVM8R+k4gRlBhh5TR2a8B6o8ir38CGBvBkQZ635Nw/Ds+L6g5NbvUJofRC9gvfN5PD9Gr7GrQX//60eQIDAQAB-----END PUBLIC KEY-----","@context":"http://schema.eduworks.com/ebac/0.1/","@signature":"OPdnoFJNpAdJ2tovbA57WSXlL7/jwXFBywkwaNW8fZa+cgGMC2f7GuBVYExbWyd2HIBEYDQT8vj1EevdhE3axA6gFamzei27kjfiVoJt83t17V0tihLP8zk4ajHS04Y8lf2/tn5KHnwuJOGdcXrMdyT0CRpEHkF7raiA0aQbNPK9XG5hwphIlyszFlnpGX1UEYhDJ3+4qAk/F1gTJGaAm4oqh1wpz/cYq7WcSA921u4u76squrENa3u0+f7u0P0hD1bwN+/kGeAe/vZdSn41nziVp9kwv1g2tZDTdbIlKjX6OqHl/+tHBUeEJRL+N1/tRgUfyoKF2LMqTl+TkQSvUw==","@type":"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature","expiry":1463528464980,"server":"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979"}]\n------WebKitFormBoundaryHPC2mTo2nsUWwL7V--\n\n'),s("span",{pre:!0,attrs:{class:"token response-status"}},[s("span",{pre:!0,attrs:{class:"token http-version property"}},[t._v("HTTP/1.1")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token status-code number"}},[t._v("200")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[t._v("OK")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Date")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Tue, 17 May 2016 23:40:16 GMT")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Server")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Apache-Coyote/1.1")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Access-Control-Allow-Origin")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("*")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Access-Control-Allow-Methods")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("GET, PUT, POST, DELETE, OPTIONS")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Access-Control-Allow-Headers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("cache-control")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("private, no-cache, no-store")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("application/json")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Keep-Alive")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("timeout=5, max=100")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Connection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Keep-Alive")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Transfer-Encoding")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("chunked")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token application-json"}},[t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhFIqjxOuV2UsVqqmknsjdSX5UOdjsCMHjXCRQ/CN+6W3p403AjewJiwacNyyosSWzzDc0w60GMMMY6ubSm0/hITlEgFmiA2g/26nCrHuSSMzoRIiql3apGnzxJsPkbHnn/uKXKlsWONMM4GYijQRNeXrFv+xNsl/Qzxdo4ND3FeTKXdWEu8JJXfKRXDo34RJYt/aSIUby0HYFVp/gUxXSBfYXU4rFLlSd4YwBfqNSiyEjCQUuXqko8FndAUbciMOxY+ko9IVM8R+k4gRlBhh5TR2a8B6o8ir38CGBvBkQZ635Nw/Ds+L6g5NbvUJofRC9gvfN5PD9Gr7GrQX//60eQIDAQAB-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Uf/gevysprqTSsKUu5Oy/g+Ua6cSpkuZ3GDnUvq2PKBa4ucOR06XTq9GPBG21Q6AiNtqFPk+l635OpwkH3MlSR6jFJxGn+UYgC4XoKHSxkBaPX7Bzk1bVgE5EerI8MsVSfp6NmDkKKesoBcdnZa+JrZllfknZte4z2Zuu7OrEUZwI9L7b7mXfZJ62Isp4YIQI/cbhRnGHqN6noCZHXkdXwD3L1bNU7knLm6bM2+FOTVV9AO2y0IEAR3RKnWtF0tODBRbmkjGih2Ec68C1ZplIg2GmSz6iWZDqfk3/ZEvcGRkgEP7GhFk7wUw7oEuIOOecdWZI0uF/y04kN9435fSJg=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"This is an example of POSTing a new object."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"New Framework"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{698:function(t,s,a){"use strict";a.r(s);var e=a(69),n=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"create"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create"}},[t._v("#")]),t._v(" Create")]),t._v(" "),s("p",[s("em",[t._v("aka '"),s("strong",[t._v("PUT")]),t._v("'")])]),t._v(" "),s("p",[t._v("To store an object in a CaSS Repository:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ol",[s("li",[s("p",[t._v("Sign the object")]),t._v(" "),s("ul",[s("li",[t._v("Create a copy of the object.")]),t._v(" "),s("li",[t._v("Remove "),s("code",[t._v("@signature")]),t._v(", "),s("code",[t._v("@owner")]),t._v(", "),s("code",[t._v("@reader")]),t._v(", and "),s("code",[t._v("@id")]),t._v(" keys (and values) from the object.")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("ul",[s("li",[t._v("Serialize the copy of the object in JSON format with the keys sorted in ASCII order and with no whitespace.")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("ul",[s("li",[t._v("Sign the serialized copy of the object using a SHA1 digest of the serialized data and RSA-2048 bit encryption with the user’s private key.")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("6>/Ê€o\")_Ì\nÖà±òj”´¼¬ùò<È(_ꪫÙTr³ßãÖxpbÚŽW #’ü¡ Ö8uµÔ×_pÀ:èûŸÛu38n·I8ùwo‹>^#ü Y”ÍS7ÇÍ=˜—ýÛ˜ñù:¹qûÎEÍRªõ1qkĹù^Äö-àːG9lj>ÿDr^“båØŠd3ç´ð¡›Ïžõ”7CÀ÷U3~+µ<ÏÃAÒ2Ï8س;¾XÁ‚‘\n¼­ç®Úwxá2T_.ÌðoÇ°'vè)#‘w…ŠíVŒÅ¾€â uü±¡‚2ì\n(...or something like that)\n")])])]),s("ul",[s("li",[t._v("Encode the signature using Base64.")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("Nj4vGMqAbyIpX4HMC9bgsfJqlLS8rPnyPMgoX+qqEKvZVHKz3+PWeHBi2o5XCSOS/KEgEtYFOHW11BbXXwZwwDro+5/bdTM4brdJOPl3B2+LPl4jDhj8IFmUzVM3x809mJf925gM8fk6uXH7zkXNUqr1MXFrxBy5+V7E9i0B4MuQFhpHOceJPv8YRHJeHZNi5dgZimQz57TwoZvPnvWUgRA3Q8D3VTN+K7U8z8NB0hkyzzjYPGunqJfEZh0pc5noftO/nBOV0zHiVT6zO75YwYKRBwq8reeu2nd44TJUXy7MD/Bvx7AndugpI5F3hYrtVowGxb6A4iB1/LGhggEy7A==\n")])])]),s("ul",[s("li",[t._v("Store the signature in the original object’s "),s("code",[t._v("@signature")]),t._v(" array (create it if it does not exist).")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Nj4vGMq...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("Add the owner to the object")]),t._v(" "),s("ul",[s("li",[t._v("Encode the owner’s public key (used to sign the object) in PEM format.\n"),s("ul",[s("li",[t._v("Specifically: X.509 SubjectPublicKeyInfo/OpenSSL PEM public key")]),t._v(" "),s("li",[t._v("This will begin with "),s("code",[t._v("-----BEGIN PUBLIC KEY-----")])])])]),t._v(" "),s("li",[t._v("Remove whitespace from the PEM encoded public key.")]),t._v(" "),s("li",[t._v("Add the owner to the object’s "),s("code",[t._v("@owner")]),t._v(" array.\n"),s("ul",[s("li",[t._v("Create the array if it does not exist.")])])])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBI...-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Nj4vGMq...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("To store the object, construct a url to "),s("code",[t._v("http(s)://///")])]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("Endpoint:")]),t._v(" Endpoint of the CaSS Repository")]),t._v(" "),s("li",[s("strong",[t._v("Type:")]),t._v(" Type of the object in semi-reversed notation")]),t._v(" "),s("li",[s("strong",[t._v("Id:")]),t._v(" Identifier of the object. Randomly generate it if it does not exist.\n"),s("ul",[s("li",[t._v("This identifier may differ from the value stored in the object’s "),s("code",[t._v("@id")]),t._v(" field. This is used when registering data stored on another server.")]),t._v(" "),s("li",[t._v("For registering data retrieved from another server, a typical identifier for storage in CaSS is the MD5 hash of the "),s("code",[t._v("@id")]),t._v(" field.")])])]),t._v(" "),s("li",[s("strong",[t._v("Version:")]),t._v(" Numerical indicator of the version, typically a last modified time in unix format.")])])]),t._v(" "),s("li",[s("p",[t._v("Assign the object’s "),s("code",[t._v("@id")]),t._v(" to the url.")]),t._v(" "),s("ul",[s("li",[t._v("Update any version indicators to the last modified date, if necessary.")])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/007c67a2-c3a1-4b38-b222-a47e3c6cef39/1461770282857"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBI...-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Nj4vGMq...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"I changed this value."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"SoarTech Test"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])]),t._v(" "),s("li",[s("p",[t._v("Add the signed, owned object to the "),s("code",[t._v("data")]),t._v(" part of a multi-part POST package.")])]),t._v(" "),s("li",[s("p",[t._v("Create a signature.")]),t._v(" "),s("ul",[s("li",[t._v("Create an empty JSON object.")]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@context")]),t._v(" to "),s("code",[t._v("http://schema.eduworks.com/ebac/0.2/")])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@type")]),t._v(" to "),s("code",[t._v("http://schema.eduworks.com/ebac/0.2/timeLimitedSignature")])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("expiry")]),t._v(" to current unix time + time in milliseconds to allow the transaction to complete.\n"),s("ul",[s("li",[t._v("5 seconds should suffice")])])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("server")]),t._v(" to "),s("code",[t._v("http(s)://")])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@signature")]),t._v(" to:\n"),s("ul",[s("li",[t._v("Serialize the copy of the object in JSON format with the keys sorted in ASCII order and with no whitespace.")]),t._v(" "),s("li",[t._v("Sign the serialized copy of the object using a SHA1 digest and RSA-2048 bit encryption with the user’s private key.")]),t._v(" "),s("li",[t._v("Encode the signature using Base64.")]),t._v(" "),s("li",[t._v("Store the signature in the original object’s "),s("code",[t._v("@signature")]),t._v(" array.\n"),s("ul",[s("li",[t._v("Create the array if it does not exist.")])])])])]),t._v(" "),s("li",[t._v("Set "),s("code",[t._v("@owner")]),t._v(" to the PEM of the user.\n"),s("ul",[s("li",[t._v("Specifically: X.509 SubjectPublicKeyInfo/OpenSSL PEM public key")])])])])]),t._v(" "),s("li",[s("p",[t._v("Add the signature to an array, and set the “signatureSheet” part of the multi-part POST package to the array.")])])]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/ebac/0.1/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"eQOJt9...=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"expiry"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1463525567195")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"server"')]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://sandbox.service.cassproject.org"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v("\n")])])]),s("ol",{attrs:{start:"8"}},[s("li",[t._v("POST the signatureSheet and data multi part mime files to the location in "),s("code",[t._v("@id")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"language-http extra-class"},[s("pre",{pre:!0,attrs:{class:"language-http"}},[s("code",[s("span",{pre:!0,attrs:{class:"token request-line"}},[s("span",{pre:!0,attrs:{class:"token method property"}},[t._v("POST")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token request-target url"}},[t._v("/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token http-version property"}},[t._v("HTTP/1.1")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Host")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("sandbox.service.cassproject.org")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Connection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("keep-alive")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Length")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("2485")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Accept")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("*/*")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Origin")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("https://sandbox.cassproject.org")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("User-Agent")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("multipart/form-data; boundary=----WebKitFormBoundaryHPC2mTo2nsUWwL7V")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Referer")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("https://sandbox.cassproject.org/cass.example/framework.html")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Accept-Encoding")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("gzip, deflate")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Accept-Language")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("en-US,en;q=0.8")])]),t._v("\n\n------WebKitFormBoundaryHPC2mTo2nsUWwL7V\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Disposition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v('form-data; name="data"')])]),t._v('\n\n{"@id":"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979","@owner":["-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhFIqjxOuV2UsVqqmknsjdSX5UOdjsCMHjXCRQ/CN+6W3p403AjewJiwacNyyosSWzzDc0w60GMMMY6ubSm0/hITlEgFmiA2g/26nCrHuSSMzoRIiql3apGnzxJsPkbHnn/uKXKlsWONMM4GYijQRNeXrFv+xNsl/Qzxdo4ND3FeTKXdWEu8JJXfKRXDo34RJYt/aSIUby0HYFVp/gUxXSBfYXU4rFLlSd4YwBfqNSiyEjCQUuXqko8FndAUbciMOxY+ko9IVM8R+k4gRlBhh5TR2a8B6o8ir38CGBvBkQZ635Nw/Ds+L6g5NbvUJofRC9gvfN5PD9Gr7GrQX//60eQIDAQAB-----END PUBLIC KEY-----"],"@context":"http://schema.eduworks.com/cass/0.1","@signature":["Uf/gevysprqTSsKUu5Oy/g+Ua6cSpkuZ3GDnUvq2PKBa4ucOR06XTq9GPBG21Q6AiNtqFPk+l635OpwkH3MlSR6jFJxGn+UYgC4XoKHSxkBaPX7Bzk1bVgE5EerI8MsVSfp6NmDkKKesoBcdnZa+JrZllfknZte4z2Zuu7OrEUZwI9L7b7mXfZJ62Isp4YIQI/cbhRnGHqN6noCZHXkdXwD3L1bNU7knLm6bM2+FOTVV9AO2y0IEAR3RKnWtF0tODBRbmkjGih2Ec68C1ZplIg2GmSz6iWZDqfk3/ZEvcGRkgEP7GhFk7wUw7oEuIOOecdWZI0uF/y04kN9435fSJg=="],"@type":"http://schema.eduworks.com/cass/0.1/framework","description":"This is an example of POSTing a new object.","name":"New Framework"}\n------WebKitFormBoundaryHPC2mTo2nsUWwL7V\n'),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Disposition")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v('form-data; name="signatureSheet"')])]),t._v('\n\n[{"@owner":"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhFIqjxOuV2UsVqqmknsjdSX5UOdjsCMHjXCRQ/CN+6W3p403AjewJiwacNyyosSWzzDc0w60GMMMY6ubSm0/hITlEgFmiA2g/26nCrHuSSMzoRIiql3apGnzxJsPkbHnn/uKXKlsWONMM4GYijQRNeXrFv+xNsl/Qzxdo4ND3FeTKXdWEu8JJXfKRXDo34RJYt/aSIUby0HYFVp/gUxXSBfYXU4rFLlSd4YwBfqNSiyEjCQUuXqko8FndAUbciMOxY+ko9IVM8R+k4gRlBhh5TR2a8B6o8ir38CGBvBkQZ635Nw/Ds+L6g5NbvUJofRC9gvfN5PD9Gr7GrQX//60eQIDAQAB-----END PUBLIC KEY-----","@context":"http://schema.eduworks.com/ebac/0.1/","@signature":"OPdnoFJNpAdJ2tovbA57WSXlL7/jwXFBywkwaNW8fZa+cgGMC2f7GuBVYExbWyd2HIBEYDQT8vj1EevdhE3axA6gFamzei27kjfiVoJt83t17V0tihLP8zk4ajHS04Y8lf2/tn5KHnwuJOGdcXrMdyT0CRpEHkF7raiA0aQbNPK9XG5hwphIlyszFlnpGX1UEYhDJ3+4qAk/F1gTJGaAm4oqh1wpz/cYq7WcSA921u4u76squrENa3u0+f7u0P0hD1bwN+/kGeAe/vZdSn41nziVp9kwv1g2tZDTdbIlKjX6OqHl/+tHBUeEJRL+N1/tRgUfyoKF2LMqTl+TkQSvUw==","@type":"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature","expiry":1463528464980,"server":"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979"}]\n------WebKitFormBoundaryHPC2mTo2nsUWwL7V--\n\n'),s("span",{pre:!0,attrs:{class:"token response-status"}},[s("span",{pre:!0,attrs:{class:"token http-version property"}},[t._v("HTTP/1.1")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token status-code number"}},[t._v("200")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[t._v("OK")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Date")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Tue, 17 May 2016 23:40:16 GMT")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Server")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Apache-Coyote/1.1")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Access-Control-Allow-Origin")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("*")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Access-Control-Allow-Methods")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("GET, PUT, POST, DELETE, OPTIONS")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Access-Control-Allow-Headers")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("cache-control")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("private, no-cache, no-store")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Content-Type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("application/json")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Keep-Alive")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("timeout=5, max=100")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Connection")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("Keep-Alive")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token header"}},[s("span",{pre:!0,attrs:{class:"token header-name keyword"}},[t._v("Transfer-Encoding")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token header-value"}},[t._v("chunked")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token application-json"}},[t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://sandbox.service.cassproject.org/data/schema.eduworks.com.cass.0.1.framework/a930b85b-7850-403e-9e05-2b23494236c4/1463528404979"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@owner"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhFIqjxOuV2UsVqqmknsjdSX5UOdjsCMHjXCRQ/CN+6W3p403AjewJiwacNyyosSWzzDc0w60GMMMY6ubSm0/hITlEgFmiA2g/26nCrHuSSMzoRIiql3apGnzxJsPkbHnn/uKXKlsWONMM4GYijQRNeXrFv+xNsl/Qzxdo4ND3FeTKXdWEu8JJXfKRXDo34RJYt/aSIUby0HYFVp/gUxXSBfYXU4rFLlSd4YwBfqNSiyEjCQUuXqko8FndAUbciMOxY+ko9IVM8R+k4gRlBhh5TR2a8B6o8ir38CGBvBkQZ635Nw/Ds+L6g5NbvUJofRC9gvfN5PD9Gr7GrQX//60eQIDAQAB-----END PUBLIC KEY-----"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@signature"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Uf/gevysprqTSsKUu5Oy/g+Ua6cSpkuZ3GDnUvq2PKBa4ucOR06XTq9GPBG21Q6AiNtqFPk+l635OpwkH3MlSR6jFJxGn+UYgC4XoKHSxkBaPX7Bzk1bVgE5EerI8MsVSfp6NmDkKKesoBcdnZa+JrZllfknZte4z2Zuu7OrEUZwI9L7b7mXfZJ62Isp4YIQI/cbhRnGHqN6noCZHXkdXwD3L1bNU7knLm6bM2+FOTVV9AO2y0IEAR3RKnWtF0tODBRbmkjGih2Ec68C1ZplIg2GmSz6iWZDqfk3/ZEvcGRkgEP7GhFk7wUw7oEuIOOecdWZI0uF/y04kN9435fSJg=="')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.eduworks.com/cass/0.1/framework"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"description"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"This is an example of POSTing a new object."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"New Framework"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])])])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/75.a205d544.js.gz b/docs/assets/js/75.ed9e1c8f.js.gz similarity index 98% rename from docs/assets/js/75.a205d544.js.gz rename to docs/assets/js/75.ed9e1c8f.js.gz index 5425ba459..a9c6fbdd0 100644 Binary files a/docs/assets/js/75.a205d544.js.gz and b/docs/assets/js/75.ed9e1c8f.js.gz differ diff --git a/docs/assets/js/76.50236a16.js b/docs/assets/js/76.c53136da.js similarity index 99% rename from docs/assets/js/76.50236a16.js rename to docs/assets/js/76.c53136da.js index d0cc037aa..8d618061d 100644 --- a/docs/assets/js/76.50236a16.js +++ b/docs/assets/js/76.c53136da.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{698:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"delete"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[e._v("#")]),e._v(" Delete")]),e._v(" "),t("p",[e._v("To delete an object from a CaSS Repository:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s)://///")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" Type of the object in semi-reversed notation\n"),t("ul",[t("li",[e._v("(ex: "),t("em",[e._v("schema.eduworks.com.cass.0.1.framework")]),e._v(")")])])]),e._v(" "),t("li",[t("strong",[e._v("Id:")]),e._v(" GUID for the object\n"),t("ul",[t("li",[e._v("This identifier may differ from the value stored in the object’s @id field. This is used when registering data stored on another server.")]),e._v(" "),t("li",[e._v("For registering data retrieved from another server, a typical identifier for storage in CaSS is the MD5 hash of the @id field.")])])]),e._v(" "),t("li",[t("strong",[e._v("Version:")]),e._v(" Numerical indicator of the version, typically a last modified time in unix format.")])])]),e._v(" "),t("li",[t("p",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the deletion of the object. This must be stored in the "),t("code",[e._v("signatureSheet")]),e._v(" header field of the request. See the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/create/"}},[e._v("Create")]),e._v(" section for instructions to construct a valid signature.")],1)])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("signatureSheet (as header)"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"hE7H8vPa...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"expiry"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1463524950899")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Submit an HTTP(S) DELETE with the above URL.")])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("DELETE")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("signatureSheet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('[{"@owner":"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi37h/zxQLcndtVHxknaNTRkHuZF+xCE3oQWfsSEjsBNag6J4bA3t6u6LT1Bu8nvNXXN5P7FN8c+/n7P1166MEQLHfgJ6v2Nkg/90ym/PTUhsF4e/D23qRiPrknjKlOSgASTYBmF2f75f6NEUDRmU4cxLtYCbq9Nts35ZYw1uszr/jRcyGWHoBW8F08fk6Oaj/IGURi3vv2G24pYmanp+MOVkjPDvyOJJGDFTWgIFwqCgNPw1y2foRdyoLeGlJlv0svr11vvRY28tg+TKI5GeQZhC/rFiX/nlCFr3rBL6Go7zm1X86GwSxfrqwRszKhSI7vvcuUMn3reoJ1f2N1fE7QIDAQAB-----END PUBLIC KEY-----","@context":"http://schema.eduworks.com/ebac/0.1/","@signature":"bkxuN4Tsu7pyYt8LduFehmgyAcJkHMwvpayKLKnbqBk1KU4naPgqEy1v+NfdVsMVTn1wz5Obn7XcegL8Mds8aNijz/fVGjZrGHu5Vp+VTJoXvAAA6SdeYI2RygegVBlwBemCT+NFqMM6kws6zHndrPvkOa5sIdwUtmoriWaO3p4pzNWRxl4x2ziO95Ko4u3MTQ/d87xMCJLE5LuXZiadRknhPgJSGmuK7WBzaxmOS+4YM9Ju9HF6ywIvMIYKQk8pzRw+Y/23KuPxAxhyk+8CCA1XvVlUkUJaIu8Al24nQVO77MgeHzB1S9p0JaxodhqJgYD/DNri3tJ3uNQntpHhMQ==","@type":"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature","expiry":1463528926960,"server":"https://demo.cassproject.org/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0/1463528860831"}]')])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("X-Requested-With")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("XMLHttpRequest")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token response-status"}},[t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token status-code number"}},[e._v("200")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[e._v("OK")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Date")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Tue, 17 May 2016 23:48:00 GMT")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Apache-Coyote/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Methods")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("GET, PUT, POST, DELETE, OPTIONS")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Headers")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("cache-control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("private, no-cache, no-store")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("application/json")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Set-Cookie")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("JSESSIONID=F3292AE7080994683219BD9256C3E787; Path=/cass-0.0.1/; HttpOnly")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Keep-Alive")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("timeout=5, max=100")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Keep-Alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Transfer-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("chunked")])]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{697:function(e,t,a){"use strict";a.r(t);var s=a(69),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"delete"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete"}},[e._v("#")]),e._v(" Delete")]),e._v(" "),t("p",[e._v("To delete an object from a CaSS Repository:")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("Construct a url to "),t("code",[e._v("http(s)://///")])]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Endpoint:")]),e._v(" Endpoint of the CaSS Repository")]),e._v(" "),t("li",[t("strong",[e._v("Type:")]),e._v(" Type of the object in semi-reversed notation\n"),t("ul",[t("li",[e._v("(ex: "),t("em",[e._v("schema.eduworks.com.cass.0.1.framework")]),e._v(")")])])]),e._v(" "),t("li",[t("strong",[e._v("Id:")]),e._v(" GUID for the object\n"),t("ul",[t("li",[e._v("This identifier may differ from the value stored in the object’s @id field. This is used when registering data stored on another server.")]),e._v(" "),t("li",[e._v("For registering data retrieved from another server, a typical identifier for storage in CaSS is the MD5 hash of the @id field.")])])]),e._v(" "),t("li",[t("strong",[e._v("Version:")]),e._v(" Numerical indicator of the version, typically a last modified time in unix format.")])])]),e._v(" "),t("li",[t("p",[e._v("You must include a signatureSheet entry with a valid signature of one of the owners in order to authorize the deletion of the object. This must be stored in the "),t("code",[e._v("signatureSheet")]),e._v(" header field of the request. See the "),t("RouterLink",{attrs:{to:"/dev/fundamentals/cass-repo-api/create/"}},[e._v("Create")]),e._v(" section for instructions to construct a valid signature.")],1)])]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[e._v("signatureSheet (as header)"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@owner"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"-----BEGIN PUBLIC KEY-----MIIBI...QAB-----END PUBLIC KEY-----"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@context"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@signature"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"hE7H8vPa...=="')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"@type"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"expiry"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1463524950899")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"http://sandbox.service.cassproject.org/"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n")])])]),t("ol",{attrs:{start:"3"}},[t("li",[e._v("Submit an HTTP(S) DELETE with the above URL.")])]),e._v(" "),t("div",{staticClass:"language-http extra-class"},[t("pre",{pre:!0,attrs:{class:"language-http"}},[t("code",[t("span",{pre:!0,attrs:{class:"token request-line"}},[t("span",{pre:!0,attrs:{class:"token method property"}},[e._v("DELETE")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token request-target url"}},[e._v("/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Host")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("keep-alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*/*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("signatureSheet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v('[{"@owner":"-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi37h/zxQLcndtVHxknaNTRkHuZF+xCE3oQWfsSEjsBNag6J4bA3t6u6LT1Bu8nvNXXN5P7FN8c+/n7P1166MEQLHfgJ6v2Nkg/90ym/PTUhsF4e/D23qRiPrknjKlOSgASTYBmF2f75f6NEUDRmU4cxLtYCbq9Nts35ZYw1uszr/jRcyGWHoBW8F08fk6Oaj/IGURi3vv2G24pYmanp+MOVkjPDvyOJJGDFTWgIFwqCgNPw1y2foRdyoLeGlJlv0svr11vvRY28tg+TKI5GeQZhC/rFiX/nlCFr3rBL6Go7zm1X86GwSxfrqwRszKhSI7vvcuUMn3reoJ1f2N1fE7QIDAQAB-----END PUBLIC KEY-----","@context":"http://schema.eduworks.com/ebac/0.1/","@signature":"bkxuN4Tsu7pyYt8LduFehmgyAcJkHMwvpayKLKnbqBk1KU4naPgqEy1v+NfdVsMVTn1wz5Obn7XcegL8Mds8aNijz/fVGjZrGHu5Vp+VTJoXvAAA6SdeYI2RygegVBlwBemCT+NFqMM6kws6zHndrPvkOa5sIdwUtmoriWaO3p4pzNWRxl4x2ziO95Ko4u3MTQ/d87xMCJLE5LuXZiadRknhPgJSGmuK7WBzaxmOS+4YM9Ju9HF6ywIvMIYKQk8pzRw+Y/23KuPxAxhyk+8CCA1XvVlUkUJaIu8Al24nQVO77MgeHzB1S9p0JaxodhqJgYD/DNri3tJ3uNQntpHhMQ==","@type":"http://schema.eduworks.com/ebac/0.1/timeLimitedSignature","expiry":1463528926960,"server":"https://demo.cassproject.org/api/custom/data/schema.eduworks.com.cass.0.1.framework/63eae4f2-1f3b-46c0-8473-c6e4ed4404d0/1463528860831"}]')])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("X-Requested-With")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("XMLHttpRequest")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("User-Agent")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Referer")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("https://demo.cassproject.org/cass.example/framework.html")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("gzip, deflate, sdch")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Accept-Language")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("en-US,en;q=0.8")])]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token response-status"}},[t("span",{pre:!0,attrs:{class:"token http-version property"}},[e._v("HTTP/1.1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token status-code number"}},[e._v("200")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token reason-phrase string"}},[e._v("OK")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Date")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Tue, 17 May 2016 23:48:00 GMT")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Apache-Coyote/1.1")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Origin")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("*")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Methods")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("GET, PUT, POST, DELETE, OPTIONS")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Access-Control-Allow-Headers")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("If-Modified-Since, Content-Type, Content-Range, Content-Disposition, Content-Description, signatureSheet")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("cache-control")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("private, no-cache, no-store")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Content-Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("application/json")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Set-Cookie")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("JSESSIONID=F3292AE7080994683219BD9256C3E787; Path=/cass-0.0.1/; HttpOnly")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Keep-Alive")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("timeout=5, max=100")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Connection")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("Keep-Alive")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token header"}},[t("span",{pre:!0,attrs:{class:"token header-name keyword"}},[e._v("Transfer-Encoding")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token header-value"}},[e._v("chunked")])]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/76.50236a16.js.gz b/docs/assets/js/76.c53136da.js.gz similarity index 95% rename from docs/assets/js/76.50236a16.js.gz rename to docs/assets/js/76.c53136da.js.gz index 76bbee470..ef8c730b1 100644 Binary files a/docs/assets/js/76.50236a16.js.gz and b/docs/assets/js/76.c53136da.js.gz differ diff --git a/docs/assets/js/80.f44ed10e.js b/docs/assets/js/80.4850a696.js similarity index 98% rename from docs/assets/js/80.f44ed10e.js rename to docs/assets/js/80.4850a696.js index deefc561d..9476a1b99 100644 --- a/docs/assets/js/80.f44ed10e.js +++ b/docs/assets/js/80.4850a696.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{702:function(e,t,a){"use strict";a.r(t);var r=a(69),s=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[e._v("#")]),e._v(" Deployment")]),e._v(" "),t("p",[e._v("Here, we'll go into detail about everything to do with deploying for production.")]),e._v(" "),t("p",[e._v("CASS is both horizontally and vertically scalable, as well as highly resilient. It can be deployed on Windows or Linux platforms in single server environments, behind multiple load balanced servers or Virtual Machines.")]),e._v(" "),t("h2",{attrs:{id:"application-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#application-server"}},[e._v("#")]),e._v(" Application Server")]),e._v(" "),t("p",[e._v("CASS may be deployed with any Node.js process manager. "),t("strong",[e._v("PM2")]),e._v(" is the default process manager provided with an installation. CASS Application Servers are mostly stateless, with the exception of security credentials, which must be reachable from the working directory of the servlet container.")]),e._v(" "),t("p",[e._v("CASS generates several files upon startup and first use of adapters and features. As such, it is recommended that the user running the servlet container be allowed to modify the working directory of the servlet container.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Version of CaSS before 0.4 have certain compromises in place that prevent horizontal scaling. This is resolved in version 0.4.")])]),e._v(" "),t("h2",{attrs:{id:"database-scalability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#database-scalability"}},[e._v("#")]),e._v(" Database Scalability")]),e._v(" "),t("p",[e._v("CASS uses ElasticSearch as a search engine and object store.")]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Vertically Scalable")]),e._v(" with")]),e._v(" "),t("ul",[t("li",[e._v("Processors")]),e._v(" "),t("li",[e._v("Memory")]),e._v(" "),t("li",[e._v("I/O")])]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Horizontally Scalable")]),e._v(" by defining clusters. Consult the "),t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElasticSearch Documentation"),t("OutboundLink")],1),e._v(" to perform these operations.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Do not configure ElasticSearch to accept connections from the outside web, as this may expose encrypted information that is intended to be private.")])]),e._v(" "),t("h2",{attrs:{id:"web-server-proxy-load-balancing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#web-server-proxy-load-balancing"}},[e._v("#")]),e._v(" Web Server Proxy/Load Balancing")]),e._v(" "),t("p",[e._v("By default, the CASS Installation installs a web server ("),t("em",[e._v("Apache2 or HTTPD")]),e._v("), an application server ("),t("em",[e._v("PM2/Node")]),e._v("), and a database ("),t("em",[e._v("ElasticSearch")]),e._v("). The web server may be moved to another machine and scaled horizontally/vertically without issue.")]),e._v(" "),t("h2",{attrs:{id:"general-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#general-security"}},[e._v("#")]),e._v(" General Security")]),e._v(" "),t("p",[e._v("CASS uses two major layers of security:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Per-Object Security")]),e._v(" - The application that creates the data uses encryption to protect data from use by anyone, including the server owner")]),e._v(" "),t("li",[t("strong",[e._v("Server Security")]),e._v(" - Signed requests must be provided for the server to return encrypted information")])]),e._v(" "),t("p",[e._v('This two-layer strategy is called "'),t("strong",[e._v("No Knowledge")]),e._v('" Security or Privacy. It ensures the protection of a user’s data by having the server require both authentic requests to return data and mechanisms to decrypt the data that are not available on the server. This means that, by design, your server may store data that you cannot access.')])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{704:function(e,t,a){"use strict";a.r(t);var r=a(69),s=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deployment"}},[e._v("#")]),e._v(" Deployment")]),e._v(" "),t("p",[e._v("Here, we'll go into detail about everything to do with deploying for production.")]),e._v(" "),t("p",[e._v("CASS is both horizontally and vertically scalable, as well as highly resilient. It can be deployed on Windows or Linux platforms in single server environments, behind multiple load balanced servers or Virtual Machines.")]),e._v(" "),t("h2",{attrs:{id:"application-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#application-server"}},[e._v("#")]),e._v(" Application Server")]),e._v(" "),t("p",[e._v("CASS may be deployed with any Node.js process manager. "),t("strong",[e._v("PM2")]),e._v(" is the default process manager provided with an installation. CASS Application Servers are mostly stateless, with the exception of security credentials, which must be reachable from the working directory of the servlet container.")]),e._v(" "),t("p",[e._v("CASS generates several files upon startup and first use of adapters and features. As such, it is recommended that the user running the servlet container be allowed to modify the working directory of the servlet container.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Version of CaSS before 0.4 have certain compromises in place that prevent horizontal scaling. This is resolved in version 0.4.")])]),e._v(" "),t("h2",{attrs:{id:"database-scalability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#database-scalability"}},[e._v("#")]),e._v(" Database Scalability")]),e._v(" "),t("p",[e._v("CASS uses ElasticSearch as a search engine and object store.")]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Vertically Scalable")]),e._v(" with")]),e._v(" "),t("ul",[t("li",[e._v("Processors")]),e._v(" "),t("li",[e._v("Memory")]),e._v(" "),t("li",[e._v("I/O")])]),e._v(" "),t("p",[e._v("ElasticSearch is "),t("strong",[e._v("Horizontally Scalable")]),e._v(" by defining clusters. Consult the "),t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElasticSearch Documentation"),t("OutboundLink")],1),e._v(" to perform these operations.")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Do not configure ElasticSearch to accept connections from the outside web, as this may expose encrypted information that is intended to be private.")])]),e._v(" "),t("h2",{attrs:{id:"web-server-proxy-load-balancing"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#web-server-proxy-load-balancing"}},[e._v("#")]),e._v(" Web Server Proxy/Load Balancing")]),e._v(" "),t("p",[e._v("By default, the CASS Installation installs a web server ("),t("em",[e._v("Apache2 or HTTPD")]),e._v("), an application server ("),t("em",[e._v("PM2/Node")]),e._v("), and a database ("),t("em",[e._v("ElasticSearch")]),e._v("). The web server may be moved to another machine and scaled horizontally/vertically without issue.")]),e._v(" "),t("h2",{attrs:{id:"general-security"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#general-security"}},[e._v("#")]),e._v(" General Security")]),e._v(" "),t("p",[e._v("CASS uses two major layers of security:")]),e._v(" "),t("ol",[t("li",[t("strong",[e._v("Per-Object Security")]),e._v(" - The application that creates the data uses encryption to protect data from use by anyone, including the server owner")]),e._v(" "),t("li",[t("strong",[e._v("Server Security")]),e._v(" - Signed requests must be provided for the server to return encrypted information")])]),e._v(" "),t("p",[e._v('This two-layer strategy is called "'),t("strong",[e._v("No Knowledge")]),e._v('" Security or Privacy. It ensures the protection of a user’s data by having the server require both authentic requests to return data and mechanisms to decrypt the data that are not available on the server. This means that, by design, your server may store data that you cannot access.')])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/80.4850a696.js.gz b/docs/assets/js/80.4850a696.js.gz new file mode 100644 index 000000000..3ab2b98f8 Binary files /dev/null and b/docs/assets/js/80.4850a696.js.gz differ diff --git a/docs/assets/js/80.f44ed10e.js.gz b/docs/assets/js/80.f44ed10e.js.gz deleted file mode 100644 index cae70a55b..000000000 Binary files a/docs/assets/js/80.f44ed10e.js.gz and /dev/null differ diff --git a/docs/assets/js/81.59bcf1bb.js.gz b/docs/assets/js/81.59bcf1bb.js.gz deleted file mode 100644 index 2dc2895db..000000000 Binary files a/docs/assets/js/81.59bcf1bb.js.gz and /dev/null differ diff --git a/docs/assets/js/81.59bcf1bb.js b/docs/assets/js/81.afce21b5.js similarity index 97% rename from docs/assets/js/81.59bcf1bb.js rename to docs/assets/js/81.afce21b5.js index 1b012d2a4..f23da6ef0 100644 --- a/docs/assets/js/81.59bcf1bb.js +++ b/docs/assets/js/81.afce21b5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{703:function(t,e,o){"use strict";o.r(e);var s=o(69),a=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"http-s-protocols"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#http-s-protocols"}},[t._v("#")]),t._v(" HTTP(s), Protocols")]),t._v(" "),e("p",[t._v("It is recommended that CASS repositories serve resources in a secure fashion using SSL certificates.")]),t._v(" "),e("h2",{attrs:{id:"default-installation-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#default-installation-configuration"}},[t._v("#")]),t._v(" Default Installation Configuration")]),t._v(" "),e("p",[t._v("CASS has the following endpoints exposed by default:")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[e("strong",[t._v("Port")])]),t._v(" "),e("th",[e("strong",[t._v("Service")])]),t._v(" "),e("th",[e("strong",[t._v("Notes")])])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("80")]),t._v(" "),e("td",[t._v("Apache2/HTTPD/...")]),t._v(" "),e("td",[t._v("Uses proxy_http to send requests to PM2 @port 8080")])]),t._v(" "),e("tr",[e("td",[t._v("8080")]),t._v(" "),e("td",[t._v("PM2/Node")]),t._v(" "),e("td",[t._v("Runs the CaSS Repo")])]),t._v(" "),e("tr",[e("td",[t._v("9200")]),t._v(" "),e("td",[t._v("ElasticSearch")]),t._v(" "),e("td",[t._v("Only responds to localhost")])])])]),t._v(" "),e("h2",{attrs:{id:"https"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#https"}},[t._v("#")]),t._v(" HTTPS")]),t._v(" "),e("p",[t._v("The default installation method of CASS is compatible with "),e("a",{attrs:{href:"https://letsencrypt.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("LetsEncrypt"),e("OutboundLink")],1),t._v(", a project to provide SSL certificates to anyone. "),e("em",[t._v("It is recommended to create a cron job to renew your LetsEncrypt certificate.")])]),t._v(" "),e("p",[t._v("Other certificate providers are also supported. Configuration of the server should be done according to the certificate provider instructions.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("--apache")]),t._v(" option to ensure the configuration of apache instead of other HTTP servers")])]),t._v(" "),e("h2",{attrs:{id:"websockets"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#websockets"}},[t._v("#")]),t._v(" WebSockets")]),t._v(" "),e("p",[t._v("CASS allows for websocket connections. When connected, CASS will echo the identifier for any object that has been updated to all connected websockets.")]),t._v(" "),e("p",[t._v("This allows for")]),t._v(" "),e("ul",[e("li",[t._v("Smarter applications that can update themselves when new data has been saved to the repository")]),t._v(" "),e("li",[t._v("Software that monitors CASS and performs some operation when data is updated, such as search aggregators")])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{702:function(t,e,o){"use strict";o.r(e);var s=o(69),a=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"http-s-protocols"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#http-s-protocols"}},[t._v("#")]),t._v(" HTTP(s), Protocols")]),t._v(" "),e("p",[t._v("It is recommended that CASS repositories serve resources in a secure fashion using SSL certificates.")]),t._v(" "),e("h2",{attrs:{id:"default-installation-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#default-installation-configuration"}},[t._v("#")]),t._v(" Default Installation Configuration")]),t._v(" "),e("p",[t._v("CASS has the following endpoints exposed by default:")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[e("strong",[t._v("Port")])]),t._v(" "),e("th",[e("strong",[t._v("Service")])]),t._v(" "),e("th",[e("strong",[t._v("Notes")])])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("80")]),t._v(" "),e("td",[t._v("Apache2/HTTPD/...")]),t._v(" "),e("td",[t._v("Uses proxy_http to send requests to PM2 @port 8080")])]),t._v(" "),e("tr",[e("td",[t._v("8080")]),t._v(" "),e("td",[t._v("PM2/Node")]),t._v(" "),e("td",[t._v("Runs the CaSS Repo")])]),t._v(" "),e("tr",[e("td",[t._v("9200")]),t._v(" "),e("td",[t._v("ElasticSearch")]),t._v(" "),e("td",[t._v("Only responds to localhost")])])])]),t._v(" "),e("h2",{attrs:{id:"https"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#https"}},[t._v("#")]),t._v(" HTTPS")]),t._v(" "),e("p",[t._v("The default installation method of CASS is compatible with "),e("a",{attrs:{href:"https://letsencrypt.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("LetsEncrypt"),e("OutboundLink")],1),t._v(", a project to provide SSL certificates to anyone. "),e("em",[t._v("It is recommended to create a cron job to renew your LetsEncrypt certificate.")])]),t._v(" "),e("p",[t._v("Other certificate providers are also supported. Configuration of the server should be done according to the certificate provider instructions.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),e("p",[t._v("Use the "),e("code",[t._v("--apache")]),t._v(" option to ensure the configuration of apache instead of other HTTP servers")])]),t._v(" "),e("h2",{attrs:{id:"websockets"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#websockets"}},[t._v("#")]),t._v(" WebSockets")]),t._v(" "),e("p",[t._v("CASS allows for websocket connections. When connected, CASS will echo the identifier for any object that has been updated to all connected websockets.")]),t._v(" "),e("p",[t._v("This allows for")]),t._v(" "),e("ul",[e("li",[t._v("Smarter applications that can update themselves when new data has been saved to the repository")]),t._v(" "),e("li",[t._v("Software that monitors CASS and performs some operation when data is updated, such as search aggregators")])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/81.afce21b5.js.gz b/docs/assets/js/81.afce21b5.js.gz new file mode 100644 index 000000000..4c0ff72d8 Binary files /dev/null and b/docs/assets/js/81.afce21b5.js.gz differ diff --git a/docs/assets/js/85.a1b46f17.js b/docs/assets/js/85.db6f3f39.js similarity index 99% rename from docs/assets/js/85.a1b46f17.js rename to docs/assets/js/85.db6f3f39.js index 5d1778769..45ab82fc8 100644 --- a/docs/assets/js/85.a1b46f17.js +++ b/docs/assets/js/85.db6f3f39.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{708:function(t,e,a){"use strict";a.r(e);var r=a(69),s=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"url-s-linked-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#url-s-linked-data"}},[t._v("#")]),t._v(" URL's, Linked Data")]),t._v(" "),e("p",[t._v("Here, we'll talk about URL principles and how to use them along with linked data.")]),t._v(" "),e("p",[t._v("The construction of URLs for linked data is an important communicator of:")]),t._v(" "),e("ul",[e("li",[t._v("Security ("),e("em",[t._v("e.g. https vs http")]),t._v(")")]),t._v(" "),e("li",[t._v("Provenance ("),e("em",[t._v("e.g. hostname")]),t._v(")")]),t._v(" "),e("li",[t._v("Categorical Information ("),e("em",[t._v("e.g. type")]),t._v(")")]),t._v(" "),e("li",[t._v("Canonical Identifiers, if any")])]),t._v(" "),e("h2",{attrs:{id:"cass-url-anatomy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-url-anatomy"}},[t._v("#")]),t._v(" CaSS URL Anatomy")]),t._v(" "),e("p",[t._v("First, let’s break down the anatomy of an automatically generated URL of a framework.")]),t._v(" "),e("p",[e("strong",[t._v("URL")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("https://dev.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/76ffff33-bd15-4bf3-a007-4ce247d2216d/1495040497868\n")])])]),e("p",[e("strong",[t._v("Anatomy")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"center"}}),t._v(" "),e("th",[e("strong",[t._v("Text")])])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Protocol")])]),t._v(" "),e("td",[t._v("https://")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Hostname")])]),t._v(" "),e("td",[t._v("dev.cassproject.org")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Endpoint")])]),t._v(" "),e("td",[t._v("/api/custom")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Request")])]),t._v(" "),e("td",[t._v("/data")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Type")])]),t._v(" "),e("td",[t._v("/schema.cassproject.org.0.2.Framework")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Identifier")])]),t._v(" "),e("td",[t._v("/76ffff33-bd15-4bf3-a007-4ce247d2216d")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Version")])]),t._v(" "),e("td",[t._v("/1495040497868")])])])]),t._v(" "),e("h3",{attrs:{id:"protocol"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#protocol"}},[t._v("#")]),t._v(" Protocol")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Denotes the protocol used to get the resource")]),t._v(" "),e("li",[t._v("Indicates to the user whether the resource is being securely transmitted\n"),e("ul",[e("li",[t._v("Notionally prevents Man in the Middle Attacks (may or may not be true)")])])])]),t._v(" "),e("h3",{attrs:{id:"hostname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hostname"}},[t._v("#")]),t._v(" Hostname")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Denotes the owner of the endpoint that is holding the resource")]),t._v(" "),e("li",[t._v("Denotes the authority of the endpoint that is holding the resource")])]),t._v(" "),e("h3",{attrs:{id:"endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#endpoint"}},[t._v("#")]),t._v(" Endpoint")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Indicates an endpoint to request data from that can provide other services")]),t._v(" "),e("li",[t._v("May be shortened to "),e("code",[t._v("/api")]),t._v(" with no repercussions ("),e("em",[t._v("version 0.3+")]),t._v(")")])]),t._v(" "),e("h3",{attrs:{id:"request"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[t._v("#")]),t._v(" Request")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Indicates the service desired\n"),e("ul",[e("li",[t._v("In this case, ‘give me the data for’")])])]),t._v(" "),e("li",[t._v("Alternatives include adapters that transform the data to another format and schema\n"),e("ul",[e("li",[t._v("Options include:\n"),e("ul",[e("li",[e("code",[t._v("/asn")]),t._v(" - "),e("em",[t._v("Converts the framework to an Achievement Standards Network, or ASN format")])])])])])])]),t._v(" "),e("h3",{attrs:{id:"type"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#type"}},[t._v("#")]),t._v(" Type")]),t._v(" "),e("ul",[e("li",[t._v("Indicates the type of the object")]),t._v(" "),e("li",[t._v("Accelerates lookup")]),t._v(" "),e("li",[t._v("Nice-to-have in situations where you want the URL to distinguish between types of objects")])]),t._v(" "),e("h3",{attrs:{id:"identifier"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#identifier"}},[t._v("#")]),t._v(" Identifier")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Requires at least one non-numeric character (to distinguish from the version)")]),t._v(" "),e("li",[t._v("Unique")]),t._v(" "),e("li",[t._v("May be canonical ("),e("em",[t._v("e.g. onet:1.1, my_competency")]),t._v(")")]),t._v(" "),e("li",[t._v("URN's work well here")])]),t._v(" "),e("h3",{attrs:{id:"version"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[t._v("#")]),t._v(" Version")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required for saving")]),t._v(", not required for lookup")]),t._v(" "),e("li",[t._v("If specified, retrieves specific version of the object")]),t._v(" "),e("li",[t._v("If not specified, retrieves latest version of the object")]),t._v(" "),e("li",[t._v("If object is deleted and specified, will retrieve specific version of the object")])]),t._v(" "),e("h2",{attrs:{id:"important-notes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#important-notes"}},[t._v("#")]),t._v(" Important Notes")]),t._v(" "),e("ul",[e("li",[t._v("The holder of the data (indicated by the hostname) may not be the owner of the data. Many organizations and individuals rely on third parties to store data.")]),t._v(" "),e("li",[t._v("Many web browsers and tools require situationally require data to be available via secure (HTTPS) protocols. Providers such as LetsEncrypt provide cheap and easy methods of getting certificates to enable this capability.")])]),t._v(" "),e("h2",{attrs:{id:"shortening"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#shortening"}},[t._v("#")]),t._v(" Shortening")]),t._v(" "),e("p",[t._v("When creating persistent URLs for display or use, shorter is often better. Omitting the Type & Version, and shortening the Endpoint, can reduce a URL from")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("https://dev.cassproject.org/api/data/schema.cassproject.org.0.3.Framework/dbbdc47e-a2d8-414f-8cd9-09052843bb6f/1504206795716\n")])])]),e("p",[t._v("to")]),t._v(" "),e("p",[e("code",[t._v("https://dev.cassproject.org/api/data/dbbdc47e-a2d8-414f-8cd9-09052843bb6f")])]),t._v(" "),e("p",[t._v("without any degradation in behavior.")]),t._v(" "),e("h2",{attrs:{id:"data-registration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#data-registration"}},[t._v("#")]),t._v(" Data Registration")]),t._v(" "),e("p",[t._v("Situations arise that data held elsewhere and owned by others be discoverable.")]),t._v(" "),e("p",[t._v("CaSS supports Data Registration, where JSON-LD data from other servers is POSTed to a CASS repository without the modification of its "),e("code",[t._v("@id")]),t._v(" url. This data will be discoverable via search, but the registered data is not considered to be homed on the repository.")]),t._v(" "),e("ul",[e("li",[t._v("This feature facilitates the aggregation of remote data onto servers for discovery purposes.")]),t._v(" "),e("li",[t._v("Harvesting and maintenance features are not yet available.")]),t._v(" "),e("li",[t._v("This feature is experimental.")]),t._v(" "),e("li",[t._v("CaSS Libraries will attempt to retrieve registered data from a CaSS repository if it is not available from the source.\n"),e("ul",[e("li",[t._v("This is particularly useful when URL's are being used as URI's but do not home the data.")])])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{709:function(t,e,a){"use strict";a.r(e);var r=a(69),s=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"url-s-linked-data"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#url-s-linked-data"}},[t._v("#")]),t._v(" URL's, Linked Data")]),t._v(" "),e("p",[t._v("Here, we'll talk about URL principles and how to use them along with linked data.")]),t._v(" "),e("p",[t._v("The construction of URLs for linked data is an important communicator of:")]),t._v(" "),e("ul",[e("li",[t._v("Security ("),e("em",[t._v("e.g. https vs http")]),t._v(")")]),t._v(" "),e("li",[t._v("Provenance ("),e("em",[t._v("e.g. hostname")]),t._v(")")]),t._v(" "),e("li",[t._v("Categorical Information ("),e("em",[t._v("e.g. type")]),t._v(")")]),t._v(" "),e("li",[t._v("Canonical Identifiers, if any")])]),t._v(" "),e("h2",{attrs:{id:"cass-url-anatomy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cass-url-anatomy"}},[t._v("#")]),t._v(" CaSS URL Anatomy")]),t._v(" "),e("p",[t._v("First, let’s break down the anatomy of an automatically generated URL of a framework.")]),t._v(" "),e("p",[e("strong",[t._v("URL")])]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("https://dev.cassproject.org/api/custom/data/schema.cassproject.org.0.2.Framework/76ffff33-bd15-4bf3-a007-4ce247d2216d/1495040497868\n")])])]),e("p",[e("strong",[t._v("Anatomy")])]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"center"}}),t._v(" "),e("th",[e("strong",[t._v("Text")])])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Protocol")])]),t._v(" "),e("td",[t._v("https://")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Hostname")])]),t._v(" "),e("td",[t._v("dev.cassproject.org")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Endpoint")])]),t._v(" "),e("td",[t._v("/api/custom")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Request")])]),t._v(" "),e("td",[t._v("/data")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Type")])]),t._v(" "),e("td",[t._v("/schema.cassproject.org.0.2.Framework")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Identifier")])]),t._v(" "),e("td",[t._v("/76ffff33-bd15-4bf3-a007-4ce247d2216d")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"center"}},[e("strong",[t._v("Version")])]),t._v(" "),e("td",[t._v("/1495040497868")])])])]),t._v(" "),e("h3",{attrs:{id:"protocol"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#protocol"}},[t._v("#")]),t._v(" Protocol")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Denotes the protocol used to get the resource")]),t._v(" "),e("li",[t._v("Indicates to the user whether the resource is being securely transmitted\n"),e("ul",[e("li",[t._v("Notionally prevents Man in the Middle Attacks (may or may not be true)")])])])]),t._v(" "),e("h3",{attrs:{id:"hostname"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hostname"}},[t._v("#")]),t._v(" Hostname")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Denotes the owner of the endpoint that is holding the resource")]),t._v(" "),e("li",[t._v("Denotes the authority of the endpoint that is holding the resource")])]),t._v(" "),e("h3",{attrs:{id:"endpoint"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#endpoint"}},[t._v("#")]),t._v(" Endpoint")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Indicates an endpoint to request data from that can provide other services")]),t._v(" "),e("li",[t._v("May be shortened to "),e("code",[t._v("/api")]),t._v(" with no repercussions ("),e("em",[t._v("version 0.3+")]),t._v(")")])]),t._v(" "),e("h3",{attrs:{id:"request"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#request"}},[t._v("#")]),t._v(" Request")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Indicates the service desired\n"),e("ul",[e("li",[t._v("In this case, ‘give me the data for’")])])]),t._v(" "),e("li",[t._v("Alternatives include adapters that transform the data to another format and schema\n"),e("ul",[e("li",[t._v("Options include:\n"),e("ul",[e("li",[e("code",[t._v("/asn")]),t._v(" - "),e("em",[t._v("Converts the framework to an Achievement Standards Network, or ASN format")])])])])])])]),t._v(" "),e("h3",{attrs:{id:"type"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#type"}},[t._v("#")]),t._v(" Type")]),t._v(" "),e("ul",[e("li",[t._v("Indicates the type of the object")]),t._v(" "),e("li",[t._v("Accelerates lookup")]),t._v(" "),e("li",[t._v("Nice-to-have in situations where you want the URL to distinguish between types of objects")])]),t._v(" "),e("h3",{attrs:{id:"identifier"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#identifier"}},[t._v("#")]),t._v(" Identifier")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required")])]),t._v(" "),e("li",[t._v("Requires at least one non-numeric character (to distinguish from the version)")]),t._v(" "),e("li",[t._v("Unique")]),t._v(" "),e("li",[t._v("May be canonical ("),e("em",[t._v("e.g. onet:1.1, my_competency")]),t._v(")")]),t._v(" "),e("li",[t._v("URN's work well here")])]),t._v(" "),e("h3",{attrs:{id:"version"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#version"}},[t._v("#")]),t._v(" Version")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("Required for saving")]),t._v(", not required for lookup")]),t._v(" "),e("li",[t._v("If specified, retrieves specific version of the object")]),t._v(" "),e("li",[t._v("If not specified, retrieves latest version of the object")]),t._v(" "),e("li",[t._v("If object is deleted and specified, will retrieve specific version of the object")])]),t._v(" "),e("h2",{attrs:{id:"important-notes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#important-notes"}},[t._v("#")]),t._v(" Important Notes")]),t._v(" "),e("ul",[e("li",[t._v("The holder of the data (indicated by the hostname) may not be the owner of the data. Many organizations and individuals rely on third parties to store data.")]),t._v(" "),e("li",[t._v("Many web browsers and tools require situationally require data to be available via secure (HTTPS) protocols. Providers such as LetsEncrypt provide cheap and easy methods of getting certificates to enable this capability.")])]),t._v(" "),e("h2",{attrs:{id:"shortening"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#shortening"}},[t._v("#")]),t._v(" Shortening")]),t._v(" "),e("p",[t._v("When creating persistent URLs for display or use, shorter is often better. Omitting the Type & Version, and shortening the Endpoint, can reduce a URL from")]),t._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("https://dev.cassproject.org/api/data/schema.cassproject.org.0.3.Framework/dbbdc47e-a2d8-414f-8cd9-09052843bb6f/1504206795716\n")])])]),e("p",[t._v("to")]),t._v(" "),e("p",[e("code",[t._v("https://dev.cassproject.org/api/data/dbbdc47e-a2d8-414f-8cd9-09052843bb6f")])]),t._v(" "),e("p",[t._v("without any degradation in behavior.")]),t._v(" "),e("h2",{attrs:{id:"data-registration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#data-registration"}},[t._v("#")]),t._v(" Data Registration")]),t._v(" "),e("p",[t._v("Situations arise that data held elsewhere and owned by others be discoverable.")]),t._v(" "),e("p",[t._v("CaSS supports Data Registration, where JSON-LD data from other servers is POSTed to a CASS repository without the modification of its "),e("code",[t._v("@id")]),t._v(" url. This data will be discoverable via search, but the registered data is not considered to be homed on the repository.")]),t._v(" "),e("ul",[e("li",[t._v("This feature facilitates the aggregation of remote data onto servers for discovery purposes.")]),t._v(" "),e("li",[t._v("Harvesting and maintenance features are not yet available.")]),t._v(" "),e("li",[t._v("This feature is experimental.")]),t._v(" "),e("li",[t._v("CaSS Libraries will attempt to retrieve registered data from a CaSS repository if it is not available from the source.\n"),e("ul",[e("li",[t._v("This is particularly useful when URL's are being used as URI's but do not home the data.")])])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/85.a1b46f17.js.gz b/docs/assets/js/85.db6f3f39.js.gz similarity index 96% rename from docs/assets/js/85.a1b46f17.js.gz rename to docs/assets/js/85.db6f3f39.js.gz index 19472cc5c..162959b2a 100644 Binary files a/docs/assets/js/85.a1b46f17.js.gz and b/docs/assets/js/85.db6f3f39.js.gz differ diff --git a/docs/assets/js/86.5bb751e0.js.gz b/docs/assets/js/86.5bb751e0.js.gz deleted file mode 100644 index cf57deecf..000000000 Binary files a/docs/assets/js/86.5bb751e0.js.gz and /dev/null differ diff --git a/docs/assets/js/86.5bb751e0.js b/docs/assets/js/86.d373c6ef.js similarity index 99% rename from docs/assets/js/86.5bb751e0.js rename to docs/assets/js/86.d373c6ef.js index 6a0c818b4..3915e0a2e 100644 --- a/docs/assets/js/86.5bb751e0.js +++ b/docs/assets/js/86.d373c6ef.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{709:function(e,t,r){"use strict";r.r(t);var a=r(69),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"links-and-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#links-and-references"}},[e._v("#")]),e._v(" Links and References")]),e._v(" "),t("h2",{attrs:{id:"github"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#github"}},[e._v("#")]),e._v(" GitHub")]),e._v(" "),t("p",[e._v("Most CaSS-related tools will be found on our organization's "),t("a",{attrs:{href:"https://github.com/cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("CaSS itself can be located in this "),t("a",{attrs:{href:"https://github.com/cassproject/CASS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub Repo"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"cass-installation-bash-script"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-installation-bash-script"}},[e._v("#")]),e._v(" CaSS Installation Bash Script")]),e._v(" "),t("p",[e._v("An installation script for Linux systems can be found "),t("a",{attrs:{href:"https://raw.githubusercontent.com/cassproject/CASS/master/scripts/cassInstall.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(". Check out the Installation guide for more help.")]),e._v(" "),t("h2",{attrs:{id:"cass-project-website"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-project-website"}},[e._v("#")]),e._v(" CaSS Project Website")]),e._v(" "),t("p",[e._v("The primary CaSS website may be found at:")]),e._v(" "),t("p",[t("a",{attrs:{href:"http://cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cassproject.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"cass-library-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-library-api"}},[e._v("#")]),e._v(" CaSS Library API")]),e._v(" "),t("p",[e._v("The CaSS Library API allows you to work with data within a CaSS instance. It's highly recommended to use Node.js along with our NPM package.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("NPM"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/tree/master/src/main/js/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://cdn.jsdelivr.net/gh/cassproject/cass@master/src/main/js/cass.js",target:"_blank",rel:"noopener noreferrer"}},[e._v("CDN"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.cassproject.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"cass-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-schema"}},[e._v("#")]),e._v(" CaSS Schema")]),e._v(" "),t("p",[e._v("A 'schema' describes the organization/structure of a set of data.")]),e._v(" "),t("p",[e._v("The schema for CaSS objects is documented "),t("a",{attrs:{href:"http://schema.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", listing the data associated with each CaSS object. CaSS is built upon the pre-existing work done at "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sandbox"}},[e._v("#")]),e._v(" Sandbox")]),e._v(" "),t("p",[e._v("The sandbox is a public site hosting a CaSS instance where you may try CaSS without setting up a CaSS instance yourself, along with a CaSS Editor for easy viewing and editting. There are two sandboxes:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://sandbox.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest stable version"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://dev.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest unstable version"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"other-learning-resources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-learning-resources"}},[e._v("#")]),e._v(" Other Learning Resources")]),e._v(" "),t("p",[e._v("The following links are helpful resources for already-existing tools that CaSS utilizes, written by others:")]),e._v(" "),t("ul",[t("li",[e._v("ElasticSearch Simple Query String\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-simple-query-string-query.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 1"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://logz.io/blog/elasticsearch-queries/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 2"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[e._v("JSON-LD\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Website"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://www.linkeddatatools.com/introduction-json-ld",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial"),t("OutboundLink")],1)])])])]),e._v(" "),t("h2",{attrs:{id:"contact-us"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contact-us"}},[e._v("#")]),e._v(" Contact Us")]),e._v(" "),t("p",[e._v("Request access to the "),t("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),t("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),t("p",[e._v("You may also "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{708:function(e,t,r){"use strict";r.r(t);var a=r(69),s=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"links-and-references"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#links-and-references"}},[e._v("#")]),e._v(" Links and References")]),e._v(" "),t("h2",{attrs:{id:"github"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#github"}},[e._v("#")]),e._v(" GitHub")]),e._v(" "),t("p",[e._v("Most CaSS-related tools will be found on our organization's "),t("a",{attrs:{href:"https://github.com/cassproject",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("CaSS itself can be located in this "),t("a",{attrs:{href:"https://github.com/cassproject/CASS",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub Repo"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"cass-installation-bash-script"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-installation-bash-script"}},[e._v("#")]),e._v(" CaSS Installation Bash Script")]),e._v(" "),t("p",[e._v("An installation script for Linux systems can be found "),t("a",{attrs:{href:"https://raw.githubusercontent.com/cassproject/CASS/master/scripts/cassInstall.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(". Check out the Installation guide for more help.")]),e._v(" "),t("h2",{attrs:{id:"cass-project-website"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-project-website"}},[e._v("#")]),e._v(" CaSS Project Website")]),e._v(" "),t("p",[e._v("The primary CaSS website may be found at:")]),e._v(" "),t("p",[t("a",{attrs:{href:"http://cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("cassproject.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"cass-library-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-library-api"}},[e._v("#")]),e._v(" CaSS Library API")]),e._v(" "),t("p",[e._v("The CaSS Library API allows you to work with data within a CaSS instance. It's highly recommended to use Node.js along with our NPM package.")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/cassproject/cass-npm",target:"_blank",rel:"noopener noreferrer"}},[e._v("NPM"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://github.com/cassproject/CASS/tree/master/src/main/js/cass",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://cdn.jsdelivr.net/gh/cassproject/cass@master/src/main/js/cass.js",target:"_blank",rel:"noopener noreferrer"}},[e._v("CDN"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://cassproject.github.io/CASS/docs/modules/org.cassproject.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"cass-schema"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cass-schema"}},[e._v("#")]),e._v(" CaSS Schema")]),e._v(" "),t("p",[e._v("A 'schema' describes the organization/structure of a set of data.")]),e._v(" "),t("p",[e._v("The schema for CaSS objects is documented "),t("a",{attrs:{href:"http://schema.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", listing the data associated with each CaSS object. CaSS is built upon the pre-existing work done at "),t("a",{attrs:{href:"https://schema.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Schema.org"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sandbox"}},[e._v("#")]),e._v(" Sandbox")]),e._v(" "),t("p",[e._v("The sandbox is a public site hosting a CaSS instance where you may try CaSS without setting up a CaSS instance yourself, along with a CaSS Editor for easy viewing and editting. There are two sandboxes:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://sandbox.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest stable version"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://dev.cassproject.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Latest unstable version"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"other-learning-resources"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-learning-resources"}},[e._v("#")]),e._v(" Other Learning Resources")]),e._v(" "),t("p",[e._v("The following links are helpful resources for already-existing tools that CaSS utilizes, written by others:")]),e._v(" "),t("ul",[t("li",[e._v("ElasticSearch Simple Query String\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/index.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Documentation"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-simple-query-string-query.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 1"),t("OutboundLink")],1),e._v("\n| "),t("a",{attrs:{href:"https://logz.io/blog/elasticsearch-queries/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial 2"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[e._v("JSON-LD\n"),t("ul",[t("li",[t("a",{attrs:{href:"https://json-ld.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Website"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://www.linkeddatatools.com/introduction-json-ld",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tutorial"),t("OutboundLink")],1)])])])]),e._v(" "),t("h2",{attrs:{id:"contact-us"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contact-us"}},[e._v("#")]),e._v(" Contact Us")]),e._v(" "),t("p",[e._v("Request access to the "),t("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),t("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),t("p",[e._v("You may also "),t("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/86.d373c6ef.js.gz b/docs/assets/js/86.d373c6ef.js.gz new file mode 100644 index 000000000..be5e17739 Binary files /dev/null and b/docs/assets/js/86.d373c6ef.js.gz differ diff --git a/docs/assets/js/90.a8a7d28e.js b/docs/assets/js/90.629133e2.js similarity index 99% rename from docs/assets/js/90.a8a7d28e.js rename to docs/assets/js/90.629133e2.js index fdfbc491d..0c13bf889 100644 --- a/docs/assets/js/90.a8a7d28e.js +++ b/docs/assets/js/90.629133e2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{714:function(t,e,v){"use strict";v.r(e);var d=v(69),_=Object(d.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"kbac-threat-model"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kbac-threat-model"}},[t._v("#")]),t._v(" KBAC Threat Model")]),t._v(" "),e("h2",{attrs:{id:"server-side-attacks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-side-attacks"}},[t._v("#")]),t._v(" Server-Side Attacks")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Operation")]),t._v(" "),e("th",[t._v("Threat")]),t._v(" "),e("th",[t._v("Specific Attack")]),t._v(" "),e("th",[t._v("Attack Effort")]),t._v(" "),e("th",[t._v("Damages")]),t._v(" "),e("th",[t._v("KBAC Effective?")]),t._v(" "),e("th",[t._v("Protections in Place")]),t._v(" "),e("th",[t._v("Mitigations")]),t._v(" "),e("th",[t._v("Advice")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, username and password can be used to retreive credentials but not decrypt credentials.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM w/Replay Attack")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Randomly salted username/password prevents replay attacks.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("Login server is hacked.")]),t._v(" "),e("td",[t._v("Server Compromised")]),t._v(" "),e("td",[t._v('"owned" server. (many)')]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Login data at rest is encrypted w/keys not on server.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, sensitive data is in a (further) encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Request is replayed for additional information.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Requests are signed, preventing request being used for any information other than the initially requested information.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is manipulated.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Requests are signed, preventing request being used for any information other than the initially requested information. Response data is also signed.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is omitted or redirected.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("Data is not stored.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Server Compromised")]),t._v(" "),e("td",[t._v("Malicious Server")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Data may be unavailable.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted. User IP/fingerprints can be acquired for correlation attacks.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, sensitive data is in a (further) encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read and HTTPS is skimmed or a certificate attack works.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Sensitive data is in an encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Request is replayed to overwrite changes.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is manipulated.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is omitted or redirected.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("Data is not stored.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, sensitive data is in a (further) encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Request is replayed to delete additional material.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture. Request signature also denotes the material to be deleted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is manipulated.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is omitted or redirected.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Server Compromised")]),t._v(" "),e("td",[t._v("Malicious Server")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")])])]),t._v(" "),e("h2",{attrs:{id:"client-side-attacks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#client-side-attacks"}},[t._v("#")]),t._v(" Client-Side Attacks")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Operation")]),t._v(" "),e("th",[t._v("Threat")]),t._v(" "),e("th",[t._v("Specific Attack")]),t._v(" "),e("th",[t._v("Attack Effort")]),t._v(" "),e("th",[t._v("Damages")]),t._v(" "),e("th",[t._v("KBAC Effective?")]),t._v(" "),e("th",[t._v("Protections")]),t._v(" "),e("th",[t._v("Mitigations")]),t._v(" "),e("th",[t._v("Advice")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Malicious Browser / Plugin")]),t._v(" "),e("td",[t._v("Low")]),t._v(" "),e("td",[t._v("One Person Compromised, cannot use Private Keys any longer. Public key should be blacklisted.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("We encourage servers to require HTTP/S which prevents some damages.")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Worm / Virus / Keylogger")]),t._v(" "),e("td",[t._v("Low")]),t._v(" "),e("td",[t._v("One Person Compromised, cannot use Private Keys any longer. Public key should be blacklisted.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Automated login prevents keylogger use.")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Malicious Javascript")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Every User after server compromised is compromised WRT this system. Usernames and passwords may be sniffed if re-entered. Private Keys may be compromised. Public keys should be blacklisted.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Automated login uses post-hashed credentials, preventing username/password from being reused in other systems.")]),t._v(" "),e("td",[t._v("Client code should be served from a signed third party (Android application, other application)")])]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Data altered before viewing on browser. (credentials added, removed, targeted attack)")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Viewed data for compromised client.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Client code should work in an isolated container, however, this theoretically can still be pierced.")])]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Data altered before viewing on browser via malicious Javascript.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Viewed data for any clients who downloads the compromised site.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Client code should be served from a signed third party (Android application, other application)")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Malicious Browser")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Data can be altered before upload.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Malicious Javascript")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Data can be altered via javascript before upload.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Malicious Browser")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Malicious Javascript")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")])])])])}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{713:function(t,e,v){"use strict";v.r(e);var d=v(69),_=Object(d.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"kbac-threat-model"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kbac-threat-model"}},[t._v("#")]),t._v(" KBAC Threat Model")]),t._v(" "),e("h2",{attrs:{id:"server-side-attacks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-side-attacks"}},[t._v("#")]),t._v(" Server-Side Attacks")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Operation")]),t._v(" "),e("th",[t._v("Threat")]),t._v(" "),e("th",[t._v("Specific Attack")]),t._v(" "),e("th",[t._v("Attack Effort")]),t._v(" "),e("th",[t._v("Damages")]),t._v(" "),e("th",[t._v("KBAC Effective?")]),t._v(" "),e("th",[t._v("Protections in Place")]),t._v(" "),e("th",[t._v("Mitigations")]),t._v(" "),e("th",[t._v("Advice")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, username and password can be used to retreive credentials but not decrypt credentials.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM w/Replay Attack")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Randomly salted username/password prevents replay attacks.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("Login server is hacked.")]),t._v(" "),e("td",[t._v("Server Compromised")]),t._v(" "),e("td",[t._v('"owned" server. (many)')]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Login data at rest is encrypted w/keys not on server.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, sensitive data is in a (further) encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Request is replayed for additional information.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Requests are signed, preventing request being used for any information other than the initially requested information.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is manipulated.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Requests are signed, preventing request being used for any information other than the initially requested information. Response data is also signed.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is omitted or redirected.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("Data is not stored.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Server Compromised")]),t._v(" "),e("td",[t._v("Malicious Server")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Data may be unavailable.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted. User IP/fingerprints can be acquired for correlation attacks.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, sensitive data is in a (further) encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read and HTTPS is skimmed or a certificate attack works.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Sensitive data is in an encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td",[t._v("Subject to NSA-style long term storage attack.")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Request is replayed to overwrite changes.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is manipulated.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is omitted or redirected.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("Data is not stored.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is read.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("HTTPS for transport, sensitive data is in a (further) encrypted form.")]),t._v(" "),e("td",[t._v("AES keys randomized for each request. RSA-2048 is strong (as of 2016).")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Request is replayed to delete additional material.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture. Request signature also denotes the material to be deleted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is manipulated.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("None")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Request signature is timestamped, limiting the viability of this attack to some number of seconds after the initial capture.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Network Compromised")]),t._v(" "),e("td",[t._v("Traffic Intercept via MITM. Data is omitted or redirected.")]),t._v(" "),e("td",[t._v("Medium")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Server Compromised")]),t._v(" "),e("td",[t._v("Malicious Server")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")])])]),t._v(" "),e("h2",{attrs:{id:"client-side-attacks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#client-side-attacks"}},[t._v("#")]),t._v(" Client-Side Attacks")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Operation")]),t._v(" "),e("th",[t._v("Threat")]),t._v(" "),e("th",[t._v("Specific Attack")]),t._v(" "),e("th",[t._v("Attack Effort")]),t._v(" "),e("th",[t._v("Damages")]),t._v(" "),e("th",[t._v("KBAC Effective?")]),t._v(" "),e("th",[t._v("Protections")]),t._v(" "),e("th",[t._v("Mitigations")]),t._v(" "),e("th",[t._v("Advice")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Malicious Browser / Plugin")]),t._v(" "),e("td",[t._v("Low")]),t._v(" "),e("td",[t._v("One Person Compromised, cannot use Private Keys any longer. Public key should be blacklisted.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("We encourage servers to require HTTP/S which prevents some damages.")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Worm / Virus / Keylogger")]),t._v(" "),e("td",[t._v("Low")]),t._v(" "),e("td",[t._v("One Person Compromised, cannot use Private Keys any longer. Public key should be blacklisted.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Automated login prevents keylogger use.")]),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User logs in using username/password")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Malicious Javascript")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Every User after server compromised is compromised WRT this system. Usernames and passwords may be sniffed if re-entered. Private Keys may be compromised. Public keys should be blacklisted.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Automated login uses post-hashed credentials, preventing username/password from being reused in other systems.")]),t._v(" "),e("td",[t._v("Client code should be served from a signed third party (Android application, other application)")])]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Data altered before viewing on browser. (credentials added, removed, targeted attack)")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Viewed data for compromised client.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Client code should work in an isolated container, however, this theoretically can still be pierced.")])]),t._v(" "),e("tr",[e("td",[t._v("User downloads data from server.")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Data altered before viewing on browser via malicious Javascript.")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Viewed data for any clients who downloads the compromised site.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td",[t._v("Client code should be served from a signed third party (Android application, other application)")])]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Malicious Browser")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Data can be altered before upload.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User uploads data to server.")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Malicious Javascript")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Data can be altered via javascript before upload.")]),t._v(" "),e("td",[t._v("No.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Client Compromised")]),t._v(" "),e("td",[t._v("Malicious Browser")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td",[t._v("Data is signed and sensitive data is encrypted.")]),t._v(" "),e("td"),t._v(" "),e("td")]),t._v(" "),e("tr",[e("td",[t._v("User deletes data.")]),t._v(" "),e("td",[t._v("Website Compromised")]),t._v(" "),e("td",[t._v("Malicious Javascript")]),t._v(" "),e("td",[t._v("High")]),t._v(" "),e("td",[t._v("Can be aborted, retaining data.")]),t._v(" "),e("td",[t._v("Yes.")]),t._v(" "),e("td"),t._v(" "),e("td"),t._v(" "),e("td")])])])])}),[],!1,null,null,null);e.default=_.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/90.629133e2.js.gz b/docs/assets/js/90.629133e2.js.gz new file mode 100644 index 000000000..8fb102dac Binary files /dev/null and b/docs/assets/js/90.629133e2.js.gz differ diff --git a/docs/assets/js/90.a8a7d28e.js.gz b/docs/assets/js/90.a8a7d28e.js.gz deleted file mode 100644 index 9b5bbcaa2..000000000 Binary files a/docs/assets/js/90.a8a7d28e.js.gz and /dev/null differ diff --git a/docs/assets/js/91.bdc660a1.js b/docs/assets/js/91.51e954d9.js similarity index 87% rename from docs/assets/js/91.bdc660a1.js rename to docs/assets/js/91.51e954d9.js index a91d122bd..b3408e32b 100644 --- a/docs/assets/js/91.bdc660a1.js +++ b/docs/assets/js/91.51e954d9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{715:function(t,s,e){"use strict";e.r(s);var a=e(69),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"about"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[this._v("#")]),this._v(" About")]),this._v(" "),t("p",[this._v("These pages offer tutorials for specific use-cases.")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{714:function(t,s,e){"use strict";e.r(s);var a=e(69),o=Object(a.a)({},(function(){var t=this._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"about"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[this._v("#")]),this._v(" About")]),this._v(" "),t("p",[this._v("These pages offer tutorials for specific use-cases.")])])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/91.bdc660a1.js.gz b/docs/assets/js/91.51e954d9.js.gz similarity index 61% rename from docs/assets/js/91.bdc660a1.js.gz rename to docs/assets/js/91.51e954d9.js.gz index 9c0cc35c5..fda948f8c 100644 Binary files a/docs/assets/js/91.bdc660a1.js.gz and b/docs/assets/js/91.51e954d9.js.gz differ diff --git a/docs/assets/js/92.e19b4e02.js.gz b/docs/assets/js/92.e19b4e02.js.gz deleted file mode 100644 index 814baf279..000000000 Binary files a/docs/assets/js/92.e19b4e02.js.gz and /dev/null differ diff --git a/docs/assets/js/92.e19b4e02.js b/docs/assets/js/92.fce7a4ef.js similarity index 99% rename from docs/assets/js/92.e19b4e02.js rename to docs/assets/js/92.fce7a4ef.js index 9261d2495..7e2ca22b3 100644 --- a/docs/assets/js/92.e19b4e02.js +++ b/docs/assets/js/92.fce7a4ef.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{713:function(t,s,e){"use strict";e.r(s);var a=e(69),n=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"align-assessments-to-competencies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#align-assessments-to-competencies"}},[t._v("#")]),t._v(" Align Assessments to Competencies")]),t._v(" "),s("p",[t._v("The functional alignment of assessment data to competency data requires the following:")]),t._v(" "),s("ol",[s("li",[t._v("A unique identifier for the assessment")]),t._v(" "),s("li",[t._v("A competency to be aligned to")]),t._v(" "),s("li",[t._v("A data pipeline that emits results from the assessment system")]),t._v(" "),s("li",[t._v("An alignment between the assessment and the competency")]),t._v(" "),s("li",[t._v("An adapter that listens for or watches the assessment system for new data and converts it into assertions")])]),t._v(" "),s("p",[t._v("With all requirements satisfied, the following should happen:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment system assesses a learner.")]),t._v(" "),s("li",[t._v("The assessment system emits a record (xAPI or otherwise) that identifies the learner, identifies the assessment or question, and provides a success/failure or score metric.")]),t._v(" "),s("li",[t._v("The assessment adapter receives the record.")]),t._v(" "),s("li",[t._v("The assessment adapter looks for alignments in CaSS by the assessment or question identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter looks up the student in CaSS by the learner’s identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter creates an assertion on behalf of the assessment system that asserts that the assessment system believes the learner holds or does not hold the aligned competency, and optionally provides a confidence based on the score. The assessment system’s record may or may not be attached as evidence.")])]),t._v(" "),s("p",[t._v("Let's dive deeper into each of these requirements.")]),t._v(" "),s("h2",{attrs:{id:"_1-a-unique-identifier-for-the-assessment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-a-unique-identifier-for-the-assessment"}},[t._v("#")]),t._v(" 1. A unique identifier for the assessment")]),t._v(" "),s("p",[t._v("This unique identifier may come from the originating system or may be generated by an intermediate system. For instance, in Moodle, a question emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/question/question.php?cmid=4&id=2")])]),t._v(" "),s("p",[t._v("and an assessment emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/mod/quiz/view.php?id=4")])]),t._v(" "),s("h2",{attrs:{id:"_2-a-competency-to-be-aligned-to"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-a-competency-to-be-aligned-to"}},[t._v("#")]),t._v(" 2. A competency to be aligned to")]),t._v(" "),s("p",[t._v("This competency should reasonably map to the assessment or assessment question. An assessment competency may have multiple competencies underneath it. This means that the assessment will implicitly make a statement about all of the competencies underneath the competency aligned.")]),t._v(" "),s("h2",{attrs:{id:"_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[t._v("#")]),t._v(" 3. A data pipeline that emits results from the assessment system")]),t._v(" "),s("p",[t._v("The data pipeline should emit, as a single record:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment or question ID")]),t._v(" "),s("li",[t._v("An identifier for the individual\n"),s("ul",[s("li",[t._v("This identifier, if an email, maps to a Person Object’s email address "),s("a",{attrs:{href:"https://schema.org/email",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("This identifier, if any other identifier, maps to a Person Object’s identifier "),s("a",{attrs:{href:"https://schema.org/identifier",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)])])]),t._v(" "),s("li",[t._v("A score, which represents pass, fail, or that can be bounded between 0-1")])]),t._v(" "),s("p",[t._v("As an example, here is an xAPI statement that does the above:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"authority"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Eduworks"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:cass@eduworks.com"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"stored"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T15:34:33.406Z"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"actor"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Fritz Ray"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:fritz.ray@eduworks.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"timestamp"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T16:33:34+01:00"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"version"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1.0.0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9f110754-817f-4207-a015-26044c78f436"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"score"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"raw"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.33333")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"min"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"max"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"scaled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0833325")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"completion"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"duration"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PT33S"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"verb"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/verbs/completed"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"display"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"completed"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"definition"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/activities/assessment"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Headset Use"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Activity"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"_4-an-alignment-between-the-assessment-and-the-competency"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_4-an-alignment-between-the-assessment-and-the-competency"}},[t._v("#")]),t._v(" 4. An alignment between the assessment and the competency")]),t._v(" "),s("p",[t._v("A resource or assessment alignment in CaSS looks like this:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreativeWork"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"educationalAlignment"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AlignmentObject"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"alignmentType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"targetUrl"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/data/schema.org.CreativeWork/ca22e231-0dc9-4368-85c7-4e37e96c710d/1525956177976"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("and is created using the following code:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CreativeWork")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (Ensure you have a repo defined in your code)")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("url "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AlignmentObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("alignmentType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("targetUrl "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("The CaSS Dashboard ("),s("strong",[t._v("cass-vlrc")]),t._v(") can do this. Navigate to the competency, click "),s("em",[t._v("Resources")]),t._v(", and use the URL of the assessment or question to create a new Resource.")])]),t._v(" "),s("h2",{attrs:{id:"_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[t._v("#")]),t._v(" 5. An adapter that listens for or watches the assessment system for new data and converts it into assertions")]),t._v(" "),s("p",[t._v("The CaSS "),s("a",{attrs:{href:"/dev/extending-cass/adapters/xapi"}},[t._v("xAPI Adapter")]),t._v(" does this.")]),t._v(" "),s("p",[t._v("Other CaSS adapters could be created that do this, as well as other code that can use the CaSS Library. To see details about how the CaSS xAPI Adapter does this, you can read the code "),s("a",{attrs:{href:"https://github.com/cassproject/CASS/blob/master/src/main/resources/c-adapter/xapi/xapi.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{715:function(t,s,e){"use strict";e.r(s);var a=e(69),n=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"align-assessments-to-competencies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#align-assessments-to-competencies"}},[t._v("#")]),t._v(" Align Assessments to Competencies")]),t._v(" "),s("p",[t._v("The functional alignment of assessment data to competency data requires the following:")]),t._v(" "),s("ol",[s("li",[t._v("A unique identifier for the assessment")]),t._v(" "),s("li",[t._v("A competency to be aligned to")]),t._v(" "),s("li",[t._v("A data pipeline that emits results from the assessment system")]),t._v(" "),s("li",[t._v("An alignment between the assessment and the competency")]),t._v(" "),s("li",[t._v("An adapter that listens for or watches the assessment system for new data and converts it into assertions")])]),t._v(" "),s("p",[t._v("With all requirements satisfied, the following should happen:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment system assesses a learner.")]),t._v(" "),s("li",[t._v("The assessment system emits a record (xAPI or otherwise) that identifies the learner, identifies the assessment or question, and provides a success/failure or score metric.")]),t._v(" "),s("li",[t._v("The assessment adapter receives the record.")]),t._v(" "),s("li",[t._v("The assessment adapter looks for alignments in CaSS by the assessment or question identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter looks up the student in CaSS by the learner’s identifier.")]),t._v(" "),s("li",[t._v("The assessment adapter creates an assertion on behalf of the assessment system that asserts that the assessment system believes the learner holds or does not hold the aligned competency, and optionally provides a confidence based on the score. The assessment system’s record may or may not be attached as evidence.")])]),t._v(" "),s("p",[t._v("Let's dive deeper into each of these requirements.")]),t._v(" "),s("h2",{attrs:{id:"_1-a-unique-identifier-for-the-assessment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_1-a-unique-identifier-for-the-assessment"}},[t._v("#")]),t._v(" 1. A unique identifier for the assessment")]),t._v(" "),s("p",[t._v("This unique identifier may come from the originating system or may be generated by an intermediate system. For instance, in Moodle, a question emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/question/question.php?cmid=4&id=2")])]),t._v(" "),s("p",[t._v("and an assessment emitted via an xAPI statement has an identifier similar to")]),t._v(" "),s("p",[s("code",[t._v("https://moodle.eduworks.com/mod/quiz/view.php?id=4")])]),t._v(" "),s("h2",{attrs:{id:"_2-a-competency-to-be-aligned-to"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_2-a-competency-to-be-aligned-to"}},[t._v("#")]),t._v(" 2. A competency to be aligned to")]),t._v(" "),s("p",[t._v("This competency should reasonably map to the assessment or assessment question. An assessment competency may have multiple competencies underneath it. This means that the assessment will implicitly make a statement about all of the competencies underneath the competency aligned.")]),t._v(" "),s("h2",{attrs:{id:"_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_3-a-data-pipeline-that-emits-results-from-the-assessment-system"}},[t._v("#")]),t._v(" 3. A data pipeline that emits results from the assessment system")]),t._v(" "),s("p",[t._v("The data pipeline should emit, as a single record:")]),t._v(" "),s("ul",[s("li",[t._v("The assessment or question ID")]),t._v(" "),s("li",[t._v("An identifier for the individual\n"),s("ul",[s("li",[t._v("This identifier, if an email, maps to a Person Object’s email address "),s("a",{attrs:{href:"https://schema.org/email",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)]),t._v(" "),s("li",[t._v("This identifier, if any other identifier, maps to a Person Object’s identifier "),s("a",{attrs:{href:"https://schema.org/identifier",target:"_blank",rel:"noopener noreferrer"}},[t._v("[schema]"),s("OutboundLink")],1)])])]),t._v(" "),s("li",[t._v("A score, which represents pass, fail, or that can be bounded between 0-1")])]),t._v(" "),s("p",[t._v("As an example, here is an xAPI statement that does the above:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"authority"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Eduworks"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:cass@eduworks.com"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"stored"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T15:34:33.406Z"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"actor"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Fritz Ray"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"mbox"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"mailto:fritz.ray@eduworks.com"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Agent"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"timestamp"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"2019-10-25T16:33:34+01:00"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"version"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"1.0.0"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"9f110754-817f-4207-a015-26044c78f436"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"result"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"score"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"raw"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.33333")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"min"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"max"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("4")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"scaled"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.0833325")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"completion"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"success"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token boolean"}},[t._v("true")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"duration"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"PT33S"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"verb"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/verbs/completed"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"display"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"completed"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"object"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"definition"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://adlnet.gov/expapi/activities/assessment"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"name"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"en"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Headset Use"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"objectType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Activity"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h2",{attrs:{id:"_4-an-alignment-between-the-assessment-and-the-competency"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_4-an-alignment-between-the-assessment-and-the-competency"}},[t._v("#")]),t._v(" 4. An alignment between the assessment and the competency")]),t._v(" "),s("p",[t._v("A resource or assessment alignment in CaSS looks like this:")]),t._v(" "),s("div",{staticClass:"language-json extra-class"},[s("pre",{pre:!0,attrs:{class:"language-json"}},[s("code",[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"CreativeWork"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"educationalAlignment"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@type"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"AlignmentObject"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"alignmentType"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"targetUrl"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@id"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/data/schema.org.CreativeWork/ca22e231-0dc9-4368-85c7-4e37e96c710d/1525956177976"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"@context"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"http://schema.org/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token property"}},[t._v('"url"')]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("p",[t._v("and is created using the following code:")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("CreativeWork")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// (Ensure you have a repo defined in your code)")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("url "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://moodle.eduworks.com/mod/quiz/view.php?id=4"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("AlignmentObject")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("alignmentType "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"assesses"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nc"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("educationalAlignment"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("targetUrl "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://sandbox.credentialengineregistry.org/resources/ce-24aae5e7-868a-4cdc-a5ad-a857bf864590"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nEcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("error"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("The CaSS Dashboard ("),s("strong",[t._v("cass-vlrc")]),t._v(") can do this. Navigate to the competency, click "),s("em",[t._v("Resources")]),t._v(", and use the URL of the assessment or question to create a new Resource.")])]),t._v(" "),s("h2",{attrs:{id:"_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#_5-an-adapter-that-listens-for-or-watches-the-assessment-system-for-new-data-and-converts-it-into-assertions"}},[t._v("#")]),t._v(" 5. An adapter that listens for or watches the assessment system for new data and converts it into assertions")]),t._v(" "),s("p",[t._v("The CaSS "),s("a",{attrs:{href:"/dev/extending-cass/adapters/xapi"}},[t._v("xAPI Adapter")]),t._v(" does this.")]),t._v(" "),s("p",[t._v("Other CaSS adapters could be created that do this, as well as other code that can use the CaSS Library. To see details about how the CaSS xAPI Adapter does this, you can read the code "),s("a",{attrs:{href:"https://github.com/cassproject/CASS/blob/master/src/main/resources/c-adapter/xapi/xapi.js",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),s("OutboundLink")],1),t._v(".")])])}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/92.fce7a4ef.js.gz b/docs/assets/js/92.fce7a4ef.js.gz new file mode 100644 index 000000000..dac3e4b17 Binary files /dev/null and b/docs/assets/js/92.fce7a4ef.js.gz differ diff --git a/docs/assets/js/94.cf25f02d.js b/docs/assets/js/94.a46ce7fc.js similarity index 99% rename from docs/assets/js/94.cf25f02d.js rename to docs/assets/js/94.a46ce7fc.js index a46a6ba29..4fcee633a 100644 --- a/docs/assets/js/94.cf25f02d.js +++ b/docs/assets/js/94.a46ce7fc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{717:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"import-csv"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#import-csv"}},[t._v("#")]),t._v(" Import CSV")]),t._v(" "),s("p",[t._v("Importing competencies from a CSV is a good way of showing how an application would use CaSS.")]),t._v(" "),s("p",[t._v("For each row of the CSV file, we'll generate a Competency object. This pattern may be extrapolated out to SQL based tables or any other relational import.")]),t._v(" "),s("p",[t._v("This example uses "),s("a",{attrs:{href:"http://papaparse.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("PapaParse"),s("OutboundLink")],1),t._v(", a JavaScript CSV tool, for easier iteration over the CSV.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" f "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcFramework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nPapa"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Once entire file is read...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("complete")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("results")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Get resulting array")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" results"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("||")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("alert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Invalid CSV"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Column indices")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" nameIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" descriptionIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" scopeIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" idIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("++")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Create a new competency")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Skip invalid names")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("nameIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("||")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("nameIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("continue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Populate the object")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("nameIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("nameIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("descriptionIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("descriptionIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("scopeIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("scope "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("scopeIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// If we have an existing ID, use it. Otherwise, generate one")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" shortId "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("idIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("idIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n shortId "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("idIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transformId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("idIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v("\n c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add ourselves as an owner")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("identity "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the competency to the framework & save")]),t._v("\n f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Save the framework to the repository")]),t._v("\n EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{718:function(t,s,a){"use strict";a.r(s);var n=a(69),e=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"import-csv"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#import-csv"}},[t._v("#")]),t._v(" Import CSV")]),t._v(" "),s("p",[t._v("Importing competencies from a CSV is a good way of showing how an application would use CaSS.")]),t._v(" "),s("p",[t._v("For each row of the CSV file, we'll generate a Competency object. This pattern may be extrapolated out to SQL based tables or any other relational import.")]),t._v(" "),s("p",[t._v("This example uses "),s("a",{attrs:{href:"http://papaparse.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("PapaParse"),s("OutboundLink")],1),t._v(", a JavaScript CSV tool, for easier iteration over the CSV.")]),t._v(" "),s("div",{staticClass:"language-js extra-class"},[s("pre",{pre:!0,attrs:{class:"language-js"}},[s("code",[s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" f "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcFramework")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"https://dev.cassproject.org/api/"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\nf"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\nPapa"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("parse")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("\n file"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Once entire file is read...")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function-variable function"}},[t._v("complete")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("function")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token parameter"}},[t._v("results")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Get resulting array")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" data "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" results"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("||")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("alert")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('"Invalid CSV"')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Column indices")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" nameIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" descriptionIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" scopeIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" idIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("<")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("length"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" i"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("++")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Create a new competency")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" c "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("new")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("EcCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Skip invalid names")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("nameIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("===")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("undefined")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("||")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("nameIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v('""')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("continue")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Populate the object")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("nameIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("name "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("nameIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("descriptionIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("description "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("descriptionIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("scopeIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("scope "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("scopeIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// If we have an existing ID, use it. Otherwise, generate one")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("var")]),t._v(" shortId "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("idIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("idIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n shortId "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("idIndex "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!==")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("transformId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("i"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),t._v("idIndex"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),t._v("\n c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("generateId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("repo"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("selectedServer"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add ourselves as an owner")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("identity "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("null")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addOwner")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("EcIdentityManager"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("default"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ids"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("ppk"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("toPk")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Add the competency to the framework & save")]),t._v("\n f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("addCompetency")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("shortId")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("c"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// Save the framework to the repository")]),t._v("\n EcRepository"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("save")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("f"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("console"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("log"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])])])])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/94.a46ce7fc.js.gz b/docs/assets/js/94.a46ce7fc.js.gz new file mode 100644 index 000000000..d8b0f2c83 Binary files /dev/null and b/docs/assets/js/94.a46ce7fc.js.gz differ diff --git a/docs/assets/js/94.cf25f02d.js.gz b/docs/assets/js/94.cf25f02d.js.gz deleted file mode 100644 index 936756a2c..000000000 Binary files a/docs/assets/js/94.cf25f02d.js.gz and /dev/null differ diff --git a/docs/assets/js/96.2e3e2822.js b/docs/assets/js/96.3512c006.js similarity index 99% rename from docs/assets/js/96.2e3e2822.js rename to docs/assets/js/96.3512c006.js index ba9ff54df..395c18f80 100644 --- a/docs/assets/js/96.2e3e2822.js +++ b/docs/assets/js/96.3512c006.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{721:function(e,a,t){"use strict";t.r(a);var o=t(69),s=Object(o.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("Welcome to the CaSS docs!")]),e._v(" "),a("p",[e._v("CaSS is a system for recording and managing competencies and assertions of competence. It serves as infrastructure for any project that requires defining or tracking the capabilities of people, and supports open data access, shared access, or proprietary access or a combination of the three.")]),e._v(" "),a("p",[e._v("In CaSS, how competencies function is defined by you or your organization with the broadest suggestion that they represent the capabilities of a person. If your organization is task centric, CaSS can hold tasks, subtasks, steps and other task-related items. If your organization is skill based, CaSS can hold skills, knowledge, abilities, etc. This is accomplished by associating a group of competencies with a formal configuration that determines what is tracked, the taxonomy, and all available properties.")]),e._v(" "),a("p",[e._v("In addition:")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is software managed by the CaSS Project, an open source project managed and supported by Eduworks.")]),e._v(" "),a("li",[e._v("CaSS was initially funded by the U.S. ADL Initiative to support the Total Learning Architecture, and has successfully transitioned from a research project into use by commercial and government entities.")]),e._v(" "),a("li",[e._v("CaSS uses the business friendly Apache 2.0 License.")]),e._v(" "),a("li",[e._v("Each piece of CaSS data has a unique URL that not only identifies it, but allows the data about the object to be retreived by any system, subject to security requirements.")]),e._v(" "),a("li",[e._v("CaSS uses Linked Open Data to support not only competencies, but the secure storage of any linked data object.")]),e._v(" "),a("li",[e._v("CaSS data is portable from one CaSS instance to another, allowing for the publishing and subscription of data across physical, logical, organizational, or standards-derived boundaries.")]),e._v(" "),a("li",[e._v("The CaSS Project publishes a CaSS Library which allows application developers to use CaSS to build software.")])]),e._v(" "),a("h2",{attrs:{id:"use-cases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-cases"}},[e._v("#")]),e._v(" Use Cases")]),e._v(" "),a("p",[e._v("Here are a couple ways that CaSS has been used.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is used by the Credential Engine as a competency framework repository to describe credentials.")]),e._v(" "),a("li",[e._v("CaSS is used in several Total Learning Architecture enabled ecosystems to transform xAPI data (what someone has done) into assertions of competence (claims about what a person knows) in order to enable adaptive learning models to understand the learner and recommend content.")])]),e._v(" "),a("h2",{attrs:{id:"example-use-case"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-use-case"}},[e._v("#")]),e._v(" Example Use Case")]),e._v(" "),a("p",[e._v("Let's imagine a hypothetical situation that would merit the use of CaSS. A business requires employees to go through lots of training. It would be useful to have a system that keeps track of each employee's progress.")]),e._v(" "),a("p",[e._v("Using CaSS for this will encompass all current and future needs for the project, and hopefully bring up some questions about how exactly this project will take form.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS will allow you to declare what exactly each training (aka competency) is")]),e._v(" "),a("li",[e._v("CaSS will allow any individual to make assertions about a user's progress. This includes not just being able to say whether someone can or cannot perform a task, but at what level they can perform at")]),e._v(" "),a("li",[e._v("CaSS will provide the tools for making sense of assertions, e.g. they may only be made by a supervisor, they may expire every 6 months, or there may be conflicts or complex interactions between assertions")]),e._v(" "),a("li",[e._v("CaSS will allow you to establish relations between competencies. For example, in order to be able to keep the shop clean, you must know how to both mop and either sweep or vacuum")]),e._v(" "),a("li",[e._v("CaSS will encrypt and provide permissioning for all stored data. Your coworker probably shouldn't be able to see how well you can perform a task, nor should they be able to modify the requirements for a task")])]),e._v(" "),a("p",[e._v("Realistically, CaSS is suitable for a much wider array of projects, however. Perhaps you'll require assertions about entire groups of people. Perhaps you're not tracking skills at all. CaSS allows assertions to be made on any competency, skill, knowledge, ability, trait, learning objective, learning outcome, or, really, anything you can think of.")]),e._v(" "),a("h2",{attrs:{id:"developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developers"}},[e._v("#")]),e._v(" Developers")]),e._v(" "),a("p",[e._v("If you're a developer, consider checking out the "),a("a",{attrs:{href:"/dev/overview"}},[e._v("Developer's Guide")]),e._v(" once you're familiar with the structure of CaSS to find more information on how to work with it. There you'll find tutorials, code references, API documentation, and helpful links to other resources such as our Github and CaSS Sandbox environment.")]),e._v(" "),a("h2",{attrs:{id:"explore-the-interfaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#explore-the-interfaces"}},[e._v("#")]),e._v(" Explore the interfaces")]),e._v(" "),a("h3",{attrs:{id:"cass-authoring-tools-ui"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cass-authoring-tools-ui"}},[e._v("#")]),e._v(" CaSS Authoring Tools UI")]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"/authoring-tool"}},[e._v("CaSS Authoring Tools")]),e._v(" provide easy to use User Interfaces for authoring and managing the data within a CaSS system. This is a more tangible way of working with CaSS without writing any code, and also a good way of testing the waters. Get started by creating a user account.")]),e._v(" "),a("h2",{attrs:{id:"join-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[e._v("#")]),e._v(" Join the community")]),e._v(" "),a("h3",{attrs:{id:"subscribe-to-our-slack-channel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#subscribe-to-our-slack-channel"}},[e._v("#")]),e._v(" Subscribe to our Slack Channel")]),e._v(" "),a("p",[e._v("Request access to the "),a("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),a("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),a("p",[e._v("You may also "),a("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{720:function(e,a,t){"use strict";t.r(a);var o=t(69),s=Object(o.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"introduction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),a("p",[e._v("Welcome to the CaSS docs!")]),e._v(" "),a("p",[e._v("CaSS is a system for recording and managing competencies and assertions of competence. It serves as infrastructure for any project that requires defining or tracking the capabilities of people, and supports open data access, shared access, or proprietary access or a combination of the three.")]),e._v(" "),a("p",[e._v("In CaSS, how competencies function is defined by you or your organization with the broadest suggestion that they represent the capabilities of a person. If your organization is task centric, CaSS can hold tasks, subtasks, steps and other task-related items. If your organization is skill based, CaSS can hold skills, knowledge, abilities, etc. This is accomplished by associating a group of competencies with a formal configuration that determines what is tracked, the taxonomy, and all available properties.")]),e._v(" "),a("p",[e._v("In addition:")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is software managed by the CaSS Project, an open source project managed and supported by Eduworks.")]),e._v(" "),a("li",[e._v("CaSS was initially funded by the U.S. ADL Initiative to support the Total Learning Architecture, and has successfully transitioned from a research project into use by commercial and government entities.")]),e._v(" "),a("li",[e._v("CaSS uses the business friendly Apache 2.0 License.")]),e._v(" "),a("li",[e._v("Each piece of CaSS data has a unique URL that not only identifies it, but allows the data about the object to be retreived by any system, subject to security requirements.")]),e._v(" "),a("li",[e._v("CaSS uses Linked Open Data to support not only competencies, but the secure storage of any linked data object.")]),e._v(" "),a("li",[e._v("CaSS data is portable from one CaSS instance to another, allowing for the publishing and subscription of data across physical, logical, organizational, or standards-derived boundaries.")]),e._v(" "),a("li",[e._v("The CaSS Project publishes a CaSS Library which allows application developers to use CaSS to build software.")])]),e._v(" "),a("h2",{attrs:{id:"use-cases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#use-cases"}},[e._v("#")]),e._v(" Use Cases")]),e._v(" "),a("p",[e._v("Here are a couple ways that CaSS has been used.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS is used by the Credential Engine as a competency framework repository to describe credentials.")]),e._v(" "),a("li",[e._v("CaSS is used in several Total Learning Architecture enabled ecosystems to transform xAPI data (what someone has done) into assertions of competence (claims about what a person knows) in order to enable adaptive learning models to understand the learner and recommend content.")])]),e._v(" "),a("h2",{attrs:{id:"example-use-case"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-use-case"}},[e._v("#")]),e._v(" Example Use Case")]),e._v(" "),a("p",[e._v("Let's imagine a hypothetical situation that would merit the use of CaSS. A business requires employees to go through lots of training. It would be useful to have a system that keeps track of each employee's progress.")]),e._v(" "),a("p",[e._v("Using CaSS for this will encompass all current and future needs for the project, and hopefully bring up some questions about how exactly this project will take form.")]),e._v(" "),a("ul",[a("li",[e._v("CaSS will allow you to declare what exactly each training (aka competency) is")]),e._v(" "),a("li",[e._v("CaSS will allow any individual to make assertions about a user's progress. This includes not just being able to say whether someone can or cannot perform a task, but at what level they can perform at")]),e._v(" "),a("li",[e._v("CaSS will provide the tools for making sense of assertions, e.g. they may only be made by a supervisor, they may expire every 6 months, or there may be conflicts or complex interactions between assertions")]),e._v(" "),a("li",[e._v("CaSS will allow you to establish relations between competencies. For example, in order to be able to keep the shop clean, you must know how to both mop and either sweep or vacuum")]),e._v(" "),a("li",[e._v("CaSS will encrypt and provide permissioning for all stored data. Your coworker probably shouldn't be able to see how well you can perform a task, nor should they be able to modify the requirements for a task")])]),e._v(" "),a("p",[e._v("Realistically, CaSS is suitable for a much wider array of projects, however. Perhaps you'll require assertions about entire groups of people. Perhaps you're not tracking skills at all. CaSS allows assertions to be made on any competency, skill, knowledge, ability, trait, learning objective, learning outcome, or, really, anything you can think of.")]),e._v(" "),a("h2",{attrs:{id:"developers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#developers"}},[e._v("#")]),e._v(" Developers")]),e._v(" "),a("p",[e._v("If you're a developer, consider checking out the "),a("a",{attrs:{href:"/dev/overview"}},[e._v("Developer's Guide")]),e._v(" once you're familiar with the structure of CaSS to find more information on how to work with it. There you'll find tutorials, code references, API documentation, and helpful links to other resources such as our Github and CaSS Sandbox environment.")]),e._v(" "),a("h2",{attrs:{id:"explore-the-interfaces"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#explore-the-interfaces"}},[e._v("#")]),e._v(" Explore the interfaces")]),e._v(" "),a("h3",{attrs:{id:"cass-authoring-tools-ui"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cass-authoring-tools-ui"}},[e._v("#")]),e._v(" CaSS Authoring Tools UI")]),e._v(" "),a("p",[e._v("The "),a("a",{attrs:{href:"/authoring-tool"}},[e._v("CaSS Authoring Tools")]),e._v(" provide easy to use User Interfaces for authoring and managing the data within a CaSS system. This is a more tangible way of working with CaSS without writing any code, and also a good way of testing the waters. Get started by creating a user account.")]),e._v(" "),a("h2",{attrs:{id:"join-the-community"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#join-the-community"}},[e._v("#")]),e._v(" Join the community")]),e._v(" "),a("h3",{attrs:{id:"subscribe-to-our-slack-channel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#subscribe-to-our-slack-channel"}},[e._v("#")]),e._v(" Subscribe to our Slack Channel")]),e._v(" "),a("p",[e._v("Request access to the "),a("a",{attrs:{href:"https://docs.google.com/a/eduworks.com/forms/viewform?bc=transparent&embedded=true&f=Arial%252C%2BVerdana%252C%2Bsans-serif&hl=en&htc=%2523666666&id=1BMaboapV0IaS8iGnCJut2obPZ9y3CWkxXuvy-7krcgE&lc=%2523003965&pli=1&tc=%2523444444&ttl=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("CaSS Slack Channel"),a("OutboundLink")],1),e._v(" to join the conversation.")]),e._v(" "),a("p",[e._v("You may also "),a("a",{attrs:{href:"mailto:cass@eduworks.com"}},[e._v("email us")]),e._v(".")])])}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/96.2e3e2822.js.gz b/docs/assets/js/96.3512c006.js.gz similarity index 64% rename from docs/assets/js/96.2e3e2822.js.gz rename to docs/assets/js/96.3512c006.js.gz index 4fac1cf8b..b9644b411 100644 Binary files a/docs/assets/js/96.2e3e2822.js.gz and b/docs/assets/js/96.3512c006.js.gz differ diff --git a/docs/assets/js/app.b43576ce.js b/docs/assets/js/app.01f66965.js similarity index 87% rename from docs/assets/js/app.b43576ce.js rename to docs/assets/js/app.01f66965.js index 40fcb8a3e..2002687c3 100644 --- a/docs/assets/js/app.b43576ce.js +++ b/docs/assets/js/app.01f66965.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],c=t[1],u=t[2],f=0,p=[];f=n.length?s(void 0,!0):(e=r(n,o),t.index+=e.length,s(e,!1))}))},function(e,t,n){"use strict";var r=n(50),o=n(23);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(4),o=n(54),i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not a function")}},function(e,t,n){"use strict";var r=n(43),o=TypeError;e.exports=function(e){if(r(e))throw new o("Can't call method on "+e);return e}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";var r=n(8),o=n(13),i=n(38);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r=n(3),o=n(172),i=n(173),a=n(132),s=n(25),c=n(29),u=n(5)("iterator"),l=a.values,f=function(e,t){if(e){if(e[u]!==l)try{s(e,u,l)}catch(t){e[u]=l}if(c(e,t,!0),o[t])for(var n in a)if(e[n]!==a[n])try{s(e,n,a[n])}catch(t){e[n]=a[n]}}};for(var p in o)f(r[p]&&r[p].prototype,p);f(i,"DOMTokenList")},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(59),a=n(258),s=o.WebAssembly,c=7!==new Error("e",{cause:7}).cause,u=function(e,t){var n={};n[e]=a(e,t,c),r({global:!0,constructor:!0,arity:1,forced:c},n)},l=function(e,t){if(s&&s[e]){var n={};n[e]=a("WebAssembly."+e,t,c),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:c},n)}};u("Error",(function(e){return function(t){return i(e,this,arguments)}})),u("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),u("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),u("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),u("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),u("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),u("URIError",(function(e){return function(t){return i(e,this,arguments)}})),l("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),l("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),l("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},function(e,t,n){var r=n(178),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){"use strict";var r=n(13).f,o=n(9),i=n(5)("toStringTag");e.exports=function(e,t,n){e&&!n&&(e=e.prototype),e&&!o(e,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(96);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(296),o=n(299);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t,n){"use strict";var r=n(0),o=n(114);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r,o,i,a=n(233),s=n(3),c=n(6),u=n(25),l=n(9),f=n(100),p=n(79),d=n(55),v=s.TypeError,h=s.WeakMap;if(a||f.state){var g=f.state||(f.state=new h);g.get=g.get,g.has=g.has,g.set=g.set,r=function(e,t){if(g.has(e))throw new v("Object already initialized");return t.facade=e,g.set(e,t),t},o=function(e){return g.get(e)||{}},i=function(e){return g.has(e)}}else{var m=p("state");d[m]=!0,r=function(e,t){if(l(e,m))throw new v("Object already initialized");return t.facade=e,u(e,m,t),t},o=function(e){return l(e,m)?e[m]:{}},i=function(e){return l(e,m)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(8),o=n(7),i=n(104),a=n(38),s=n(21),c=n(102),u=n(9),l=n(140),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=c(t),l)try{return f(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";var r,o=n(10),i=n(138),a=n(103),s=n(55),c=n(146),u=n(76),l=n(79),f=l("IE_PROTO"),p=function(){},d=function(e){return" + diff --git a/docs/authoring/assertions/assertion-timeline/index.html.gz b/docs/authoring/assertions/assertion-timeline/index.html.gz index 55afbf07d..56ed2e3c7 100644 Binary files a/docs/authoring/assertions/assertion-timeline/index.html.gz and b/docs/authoring/assertions/assertion-timeline/index.html.gz differ diff --git a/docs/authoring/assertions/managing-assertions/index.html b/docs/authoring/assertions/managing-assertions/index.html index 3e8631670..fcfe9920a 100644 --- a/docs/authoring/assertions/managing-assertions/index.html +++ b/docs/authoring/assertions/managing-assertions/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/assertions/managing-assertions/index.html.gz b/docs/authoring/assertions/managing-assertions/index.html.gz index 302e7ab30..d86022554 100644 Binary files a/docs/authoring/assertions/managing-assertions/index.html.gz and b/docs/authoring/assertions/managing-assertions/index.html.gz differ diff --git a/docs/authoring/assertions/sharing-assertions/index.html b/docs/authoring/assertions/sharing-assertions/index.html index c542a73be..43b5218ac 100644 --- a/docs/authoring/assertions/sharing-assertions/index.html +++ b/docs/authoring/assertions/sharing-assertions/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/assertions/sharing-assertions/index.html.gz b/docs/authoring/assertions/sharing-assertions/index.html.gz index f25f13504..1cbd90c2b 100644 Binary files a/docs/authoring/assertions/sharing-assertions/index.html.gz and b/docs/authoring/assertions/sharing-assertions/index.html.gz differ diff --git a/docs/authoring/competency-and-framework-management/index.html b/docs/authoring/competency-and-framework-management/index.html index 3dfef5587..4a2d2edea 100644 --- a/docs/authoring/competency-and-framework-management/index.html +++ b/docs/authoring/competency-and-framework-management/index.html @@ -20,7 +20,7 @@ - + @@ -49,6 +49,6 @@ →

- + diff --git a/docs/authoring/competency-and-framework-management/index.html.gz b/docs/authoring/competency-and-framework-management/index.html.gz index 2763abe5b..85e38154e 100644 Binary files a/docs/authoring/competency-and-framework-management/index.html.gz and b/docs/authoring/competency-and-framework-management/index.html.gz differ diff --git a/docs/authoring/competency-properties/index.html b/docs/authoring/competency-properties/index.html index 9a163860f..ae962cdbb 100644 --- a/docs/authoring/competency-properties/index.html +++ b/docs/authoring/competency-properties/index.html @@ -20,7 +20,7 @@ - + @@ -46,6 +46,6 @@ →

- + diff --git a/docs/authoring/competency-properties/index.html.gz b/docs/authoring/competency-properties/index.html.gz index 9010c4372..ebb55e321 100644 Binary files a/docs/authoring/competency-properties/index.html.gz and b/docs/authoring/competency-properties/index.html.gz differ diff --git a/docs/authoring/configuration/index.html b/docs/authoring/configuration/index.html index f9d253b91..781f80789 100644 --- a/docs/authoring/configuration/index.html +++ b/docs/authoring/configuration/index.html @@ -20,7 +20,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/authoring/configuration/index.html.gz b/docs/authoring/configuration/index.html.gz index e30ccc5ba..d9f75cf59 100644 Binary files a/docs/authoring/configuration/index.html.gz and b/docs/authoring/configuration/index.html.gz differ diff --git a/docs/authoring/crosswalk-tool/index.html b/docs/authoring/crosswalk-tool/index.html index eddc702f3..482250eca 100644 --- a/docs/authoring/crosswalk-tool/index.html +++ b/docs/authoring/crosswalk-tool/index.html @@ -20,7 +20,7 @@ - + @@ -51,6 +51,6 @@ →

- + diff --git a/docs/authoring/crosswalk-tool/index.html.gz b/docs/authoring/crosswalk-tool/index.html.gz index ef3849259..13ec04b5c 100644 Binary files a/docs/authoring/crosswalk-tool/index.html.gz and b/docs/authoring/crosswalk-tool/index.html.gz differ diff --git a/docs/authoring/default-users/index.html b/docs/authoring/default-users/index.html index 1615801aa..a06d51afe 100644 --- a/docs/authoring/default-users/index.html +++ b/docs/authoring/default-users/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/default-users/index.html.gz b/docs/authoring/default-users/index.html.gz index 0a7bc85cc..8d4e32f42 100644 Binary files a/docs/authoring/default-users/index.html.gz and b/docs/authoring/default-users/index.html.gz differ diff --git a/docs/authoring/directory-management/index.html b/docs/authoring/directory-management/index.html index c46772126..30ab268a3 100644 --- a/docs/authoring/directory-management/index.html +++ b/docs/authoring/directory-management/index.html @@ -20,7 +20,7 @@ - + @@ -53,6 +53,6 @@ →

- + diff --git a/docs/authoring/directory-management/index.html.gz b/docs/authoring/directory-management/index.html.gz index f4dedbc35..84aef6b48 100644 Binary files a/docs/authoring/directory-management/index.html.gz and b/docs/authoring/directory-management/index.html.gz differ diff --git a/docs/authoring/directory-sharing/index.html b/docs/authoring/directory-sharing/index.html index 28eb0d2fb..f11b70ec6 100644 --- a/docs/authoring/directory-sharing/index.html +++ b/docs/authoring/directory-sharing/index.html @@ -20,7 +20,7 @@ - + @@ -42,6 +42,6 @@ →

- + diff --git a/docs/authoring/directory-sharing/index.html.gz b/docs/authoring/directory-sharing/index.html.gz index ff3067873..703f1a977 100644 Binary files a/docs/authoring/directory-sharing/index.html.gz and b/docs/authoring/directory-sharing/index.html.gz differ diff --git a/docs/authoring/exporting-framework/index.html b/docs/authoring/exporting-framework/index.html index 07e449937..562d5f320 100644 --- a/docs/authoring/exporting-framework/index.html +++ b/docs/authoring/exporting-framework/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/exporting-framework/index.html.gz b/docs/authoring/exporting-framework/index.html.gz index 3ff4cacbe..d2df25798 100644 Binary files a/docs/authoring/exporting-framework/index.html.gz and b/docs/authoring/exporting-framework/index.html.gz differ diff --git a/docs/authoring/framework-properties/index.html b/docs/authoring/framework-properties/index.html index b869f19e2..01a4e8680 100644 --- a/docs/authoring/framework-properties/index.html +++ b/docs/authoring/framework-properties/index.html @@ -20,7 +20,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/authoring/framework-properties/index.html.gz b/docs/authoring/framework-properties/index.html.gz index 3a830bd4f..e428591b0 100644 Binary files a/docs/authoring/framework-properties/index.html.gz and b/docs/authoring/framework-properties/index.html.gz differ diff --git a/docs/authoring/getting-started/index.html b/docs/authoring/getting-started/index.html index 9fea94c9f..5db7d301c 100644 --- a/docs/authoring/getting-started/index.html +++ b/docs/authoring/getting-started/index.html @@ -20,7 +20,7 @@ - + @@ -69,6 +69,6 @@ →

- + diff --git a/docs/authoring/getting-started/index.html.gz b/docs/authoring/getting-started/index.html.gz index a61bd39b7..2b27ed653 100644 Binary files a/docs/authoring/getting-started/index.html.gz and b/docs/authoring/getting-started/index.html.gz differ diff --git a/docs/authoring/importing-framework/index.html b/docs/authoring/importing-framework/index.html index 7b28195bb..6cde2a281 100644 --- a/docs/authoring/importing-framework/index.html +++ b/docs/authoring/importing-framework/index.html @@ -20,7 +20,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/authoring/importing-framework/index.html.gz b/docs/authoring/importing-framework/index.html.gz index 6dcc3b225..685477a77 100644 Binary files a/docs/authoring/importing-framework/index.html.gz and b/docs/authoring/importing-framework/index.html.gz differ diff --git a/docs/authoring/organizations-and-groups/index.html b/docs/authoring/organizations-and-groups/index.html index 760cbcd46..d89cf14aa 100644 --- a/docs/authoring/organizations-and-groups/index.html +++ b/docs/authoring/organizations-and-groups/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/organizations-and-groups/index.html.gz b/docs/authoring/organizations-and-groups/index.html.gz index 808f018d8..020cd6ae9 100644 Binary files a/docs/authoring/organizations-and-groups/index.html.gz and b/docs/authoring/organizations-and-groups/index.html.gz differ diff --git a/docs/authoring/taxonomies/index.html b/docs/authoring/taxonomies/index.html index e1e86728a..c933b8c9d 100644 --- a/docs/authoring/taxonomies/index.html +++ b/docs/authoring/taxonomies/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/authoring/taxonomies/index.html.gz b/docs/authoring/taxonomies/index.html.gz index b5c069904..aaf641fb2 100644 Binary files a/docs/authoring/taxonomies/index.html.gz and b/docs/authoring/taxonomies/index.html.gz differ diff --git a/docs/authoring/users-and-groups/index.html b/docs/authoring/users-and-groups/index.html index 13b3a4a9f..bd59dd124 100644 --- a/docs/authoring/users-and-groups/index.html +++ b/docs/authoring/users-and-groups/index.html @@ -20,7 +20,7 @@ - + @@ -42,6 +42,6 @@ →

- + diff --git a/docs/authoring/users-and-groups/index.html.gz b/docs/authoring/users-and-groups/index.html.gz index c16fa5fa0..2984f0226 100644 Binary files a/docs/authoring/users-and-groups/index.html.gz and b/docs/authoring/users-and-groups/index.html.gz differ diff --git a/docs/dev/cass-configuration/index.html b/docs/dev/cass-configuration/index.html index 608c880c5..029c6f4a8 100644 --- a/docs/dev/cass-configuration/index.html +++ b/docs/dev/cass-configuration/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/cass-configuration/index.html.gz b/docs/dev/cass-configuration/index.html.gz index 0ed74b5b5..46581ee6a 100644 Binary files a/docs/dev/cass-configuration/index.html.gz and b/docs/dev/cass-configuration/index.html.gz differ diff --git a/docs/dev/cass-installation/index.html b/docs/dev/cass-installation/index.html index 60d472224..1cdc61c35 100644 --- a/docs/dev/cass-installation/index.html +++ b/docs/dev/cass-installation/index.html @@ -20,7 +20,7 @@ - + @@ -55,6 +55,6 @@ →

- + diff --git a/docs/dev/cass-installation/index.html.gz b/docs/dev/cass-installation/index.html.gz index 2da5a3fa4..ddbd3e229 100644 Binary files a/docs/dev/cass-installation/index.html.gz and b/docs/dev/cass-installation/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/csharp/index.html b/docs/dev/cass-library-hello-world/csharp/index.html index bd7de63d9..4407bc21d 100644 --- a/docs/dev/cass-library-hello-world/csharp/index.html +++ b/docs/dev/cass-library-hello-world/csharp/index.html @@ -20,7 +20,7 @@ - + @@ -67,6 +67,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/csharp/index.html.gz b/docs/dev/cass-library-hello-world/csharp/index.html.gz index 0ee7516ca..a57c82f5d 100644 Binary files a/docs/dev/cass-library-hello-world/csharp/index.html.gz and b/docs/dev/cass-library-hello-world/csharp/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/index.html b/docs/dev/cass-library-hello-world/index.html index 71690e7f4..37e087e1b 100644 --- a/docs/dev/cass-library-hello-world/index.html +++ b/docs/dev/cass-library-hello-world/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/index.html.gz b/docs/dev/cass-library-hello-world/index.html.gz index 89410683a..5034b5093 100644 Binary files a/docs/dev/cass-library-hello-world/index.html.gz and b/docs/dev/cass-library-hello-world/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/java/index.html b/docs/dev/cass-library-hello-world/java/index.html index e8caaf033..3fd14c689 100644 --- a/docs/dev/cass-library-hello-world/java/index.html +++ b/docs/dev/cass-library-hello-world/java/index.html @@ -20,7 +20,7 @@ - + @@ -234,6 +234,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/java/index.html.gz b/docs/dev/cass-library-hello-world/java/index.html.gz index d152a9d47..d713b28fd 100644 Binary files a/docs/dev/cass-library-hello-world/java/index.html.gz and b/docs/dev/cass-library-hello-world/java/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/javascript/index.html b/docs/dev/cass-library-hello-world/javascript/index.html index 5a01e8a00..cf50a5610 100644 --- a/docs/dev/cass-library-hello-world/javascript/index.html +++ b/docs/dev/cass-library-hello-world/javascript/index.html @@ -20,7 +20,7 @@ - + @@ -86,6 +86,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/javascript/index.html.gz b/docs/dev/cass-library-hello-world/javascript/index.html.gz index f25108b3f..78697cef2 100644 Binary files a/docs/dev/cass-library-hello-world/javascript/index.html.gz and b/docs/dev/cass-library-hello-world/javascript/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/node-js/index.html b/docs/dev/cass-library-hello-world/node-js/index.html index 25c6e6b62..e6b6221f4 100644 --- a/docs/dev/cass-library-hello-world/node-js/index.html +++ b/docs/dev/cass-library-hello-world/node-js/index.html @@ -20,7 +20,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/node-js/index.html.gz b/docs/dev/cass-library-hello-world/node-js/index.html.gz index 2b5524fff..a3ee18ddb 100644 Binary files a/docs/dev/cass-library-hello-world/node-js/index.html.gz and b/docs/dev/cass-library-hello-world/node-js/index.html.gz differ diff --git a/docs/dev/cass-library-hello-world/php/index.html b/docs/dev/cass-library-hello-world/php/index.html index 4bdb60e1c..89a3169c3 100644 --- a/docs/dev/cass-library-hello-world/php/index.html +++ b/docs/dev/cass-library-hello-world/php/index.html @@ -20,7 +20,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/dev/cass-library-hello-world/php/index.html.gz b/docs/dev/cass-library-hello-world/php/index.html.gz index ea5b3938a..060120b83 100644 Binary files a/docs/dev/cass-library-hello-world/php/index.html.gz and b/docs/dev/cass-library-hello-world/php/index.html.gz differ diff --git a/docs/dev/contributing/index.html b/docs/dev/contributing/index.html index af5ccf59d..2bc8461c4 100644 --- a/docs/dev/contributing/index.html +++ b/docs/dev/contributing/index.html @@ -20,7 +20,7 @@ - + @@ -37,6 +37,6 @@

- + diff --git a/docs/dev/contributing/index.html.gz b/docs/dev/contributing/index.html.gz index fa2c6fcbd..c34870a70 100644 Binary files a/docs/dev/contributing/index.html.gz and b/docs/dev/contributing/index.html.gz differ diff --git a/docs/dev/design-principles/index.html b/docs/dev/design-principles/index.html index 873901b46..8d41ba3b4 100644 --- a/docs/dev/design-principles/index.html +++ b/docs/dev/design-principles/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/design-principles/index.html.gz b/docs/dev/design-principles/index.html.gz index 86216cf4b..acfd3dc6b 100644 Binary files a/docs/dev/design-principles/index.html.gz and b/docs/dev/design-principles/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/asn/index.html b/docs/dev/extending-cass/adapters/asn/index.html index 6419e1d2a..c766589cf 100644 --- a/docs/dev/extending-cass/adapters/asn/index.html +++ b/docs/dev/extending-cass/adapters/asn/index.html @@ -20,7 +20,7 @@ - + @@ -45,6 +45,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/asn/index.html.gz b/docs/dev/extending-cass/adapters/asn/index.html.gz index fc280e74d..af6ec206d 100644 Binary files a/docs/dev/extending-cass/adapters/asn/index.html.gz and b/docs/dev/extending-cass/adapters/asn/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/ceasn/index.html b/docs/dev/extending-cass/adapters/ceasn/index.html index c1aa122d2..759eb816a 100644 --- a/docs/dev/extending-cass/adapters/ceasn/index.html +++ b/docs/dev/extending-cass/adapters/ceasn/index.html @@ -20,7 +20,7 @@ - + @@ -45,6 +45,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/ceasn/index.html.gz b/docs/dev/extending-cass/adapters/ceasn/index.html.gz index 22631150a..4994d423a 100644 Binary files a/docs/dev/extending-cass/adapters/ceasn/index.html.gz and b/docs/dev/extending-cass/adapters/ceasn/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/ims-case/index.html b/docs/dev/extending-cass/adapters/ims-case/index.html index aab8322c9..f2f613f19 100644 --- a/docs/dev/extending-cass/adapters/ims-case/index.html +++ b/docs/dev/extending-cass/adapters/ims-case/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/ims-case/index.html.gz b/docs/dev/extending-cass/adapters/ims-case/index.html.gz index 09d68c5e9..de0eb0b41 100644 Binary files a/docs/dev/extending-cass/adapters/ims-case/index.html.gz and b/docs/dev/extending-cass/adapters/ims-case/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/ims-open-badge/index.html b/docs/dev/extending-cass/adapters/ims-open-badge/index.html index 656a36baf..dceeecb58 100644 --- a/docs/dev/extending-cass/adapters/ims-open-badge/index.html +++ b/docs/dev/extending-cass/adapters/ims-open-badge/index.html @@ -20,7 +20,7 @@ - + @@ -51,6 +51,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz b/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz index ef541c848..3732dc12a 100644 Binary files a/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz and b/docs/dev/extending-cass/adapters/ims-open-badge/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/index.html b/docs/dev/extending-cass/adapters/index.html index b95ae3299..6527d5db0 100644 --- a/docs/dev/extending-cass/adapters/index.html +++ b/docs/dev/extending-cass/adapters/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/index.html.gz b/docs/dev/extending-cass/adapters/index.html.gz index e293a4426..26d68ab15 100644 Binary files a/docs/dev/extending-cass/adapters/index.html.gz and b/docs/dev/extending-cass/adapters/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/moodle/index.html b/docs/dev/extending-cass/adapters/moodle/index.html index ad0f50a06..b6d1c52f6 100644 --- a/docs/dev/extending-cass/adapters/moodle/index.html +++ b/docs/dev/extending-cass/adapters/moodle/index.html @@ -20,7 +20,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/moodle/index.html.gz b/docs/dev/extending-cass/adapters/moodle/index.html.gz index a1e4980f9..56aad2dd0 100644 Binary files a/docs/dev/extending-cass/adapters/moodle/index.html.gz and b/docs/dev/extending-cass/adapters/moodle/index.html.gz differ diff --git a/docs/dev/extending-cass/adapters/xapi/index.html b/docs/dev/extending-cass/adapters/xapi/index.html index f0223c4b5..5b2973f29 100644 --- a/docs/dev/extending-cass/adapters/xapi/index.html +++ b/docs/dev/extending-cass/adapters/xapi/index.html @@ -20,7 +20,7 @@ - + @@ -106,6 +106,6 @@ →

- + diff --git a/docs/dev/extending-cass/adapters/xapi/index.html.gz b/docs/dev/extending-cass/adapters/xapi/index.html.gz index ddec984a0..9f29b1ef9 100644 Binary files a/docs/dev/extending-cass/adapters/xapi/index.html.gz and b/docs/dev/extending-cass/adapters/xapi/index.html.gz differ diff --git a/docs/dev/extending-cass/index.html b/docs/dev/extending-cass/index.html index b2d7b2b98..287fd9432 100644 --- a/docs/dev/extending-cass/index.html +++ b/docs/dev/extending-cass/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/index.html.gz b/docs/dev/extending-cass/index.html.gz index b4778b05b..19393ba8c 100644 Binary files a/docs/dev/extending-cass/index.html.gz and b/docs/dev/extending-cass/index.html.gz differ diff --git a/docs/dev/extending-cass/working-with-other-schemas/index.html b/docs/dev/extending-cass/working-with-other-schemas/index.html index 38ad48230..c4e819f96 100644 --- a/docs/dev/extending-cass/working-with-other-schemas/index.html +++ b/docs/dev/extending-cass/working-with-other-schemas/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/extending-cass/working-with-other-schemas/index.html.gz b/docs/dev/extending-cass/working-with-other-schemas/index.html.gz index 7de152fff..b41273ccb 100644 Binary files a/docs/dev/extending-cass/working-with-other-schemas/index.html.gz and b/docs/dev/extending-cass/working-with-other-schemas/index.html.gz differ diff --git a/docs/dev/fundamentals/assertion-processing/index.html b/docs/dev/fundamentals/assertion-processing/index.html index c942d7d01..a76a8f08b 100644 --- a/docs/dev/fundamentals/assertion-processing/index.html +++ b/docs/dev/fundamentals/assertion-processing/index.html @@ -20,7 +20,7 @@ - + @@ -60,6 +60,6 @@ →

- + diff --git a/docs/dev/fundamentals/assertion-processing/index.html.gz b/docs/dev/fundamentals/assertion-processing/index.html.gz index 48697a5d8..df7a17c23 100644 Binary files a/docs/dev/fundamentals/assertion-processing/index.html.gz and b/docs/dev/fundamentals/assertion-processing/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/assertion/index.html b/docs/dev/fundamentals/cass-objects/assertion/index.html index ca3f8473d..7cd6329a4 100644 --- a/docs/dev/fundamentals/cass-objects/assertion/index.html +++ b/docs/dev/fundamentals/cass-objects/assertion/index.html @@ -20,7 +20,7 @@ - + @@ -122,6 +122,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/assertion/index.html.gz b/docs/dev/fundamentals/cass-objects/assertion/index.html.gz index 09cd2cb49..bfd1b7639 100644 Binary files a/docs/dev/fundamentals/cass-objects/assertion/index.html.gz and b/docs/dev/fundamentals/cass-objects/assertion/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/competency/index.html b/docs/dev/fundamentals/cass-objects/competency/index.html index a4dcb47c9..f1cba5cef 100644 --- a/docs/dev/fundamentals/cass-objects/competency/index.html +++ b/docs/dev/fundamentals/cass-objects/competency/index.html @@ -20,7 +20,7 @@ - + @@ -94,6 +94,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/competency/index.html.gz b/docs/dev/fundamentals/cass-objects/competency/index.html.gz index 489b38f7a..8343c7037 100644 Binary files a/docs/dev/fundamentals/cass-objects/competency/index.html.gz and b/docs/dev/fundamentals/cass-objects/competency/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/framework/index.html b/docs/dev/fundamentals/cass-objects/framework/index.html index 5b9e6f9a2..033a3715d 100644 --- a/docs/dev/fundamentals/cass-objects/framework/index.html +++ b/docs/dev/fundamentals/cass-objects/framework/index.html @@ -20,7 +20,7 @@ - + @@ -110,6 +110,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/framework/index.html.gz b/docs/dev/fundamentals/cass-objects/framework/index.html.gz index e5e00fdef..57fcd2210 100644 Binary files a/docs/dev/fundamentals/cass-objects/framework/index.html.gz and b/docs/dev/fundamentals/cass-objects/framework/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/index.html b/docs/dev/fundamentals/cass-objects/index.html index 0ab05626e..cab493b53 100644 --- a/docs/dev/fundamentals/cass-objects/index.html +++ b/docs/dev/fundamentals/cass-objects/index.html @@ -20,7 +20,7 @@ - + @@ -75,6 +75,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/index.html.gz b/docs/dev/fundamentals/cass-objects/index.html.gz index ff1a893ea..320f1b542 100644 Binary files a/docs/dev/fundamentals/cass-objects/index.html.gz and b/docs/dev/fundamentals/cass-objects/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/level/index.html b/docs/dev/fundamentals/cass-objects/level/index.html index 5bb3b72b6..339deaac8 100644 --- a/docs/dev/fundamentals/cass-objects/level/index.html +++ b/docs/dev/fundamentals/cass-objects/level/index.html @@ -20,7 +20,7 @@ - + @@ -92,6 +92,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/level/index.html.gz b/docs/dev/fundamentals/cass-objects/level/index.html.gz index f2bd814ad..a4d23432a 100644 Binary files a/docs/dev/fundamentals/cass-objects/level/index.html.gz and b/docs/dev/fundamentals/cass-objects/level/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/relation/index.html b/docs/dev/fundamentals/cass-objects/relation/index.html index 45ef28096..3f4c2f6c3 100644 --- a/docs/dev/fundamentals/cass-objects/relation/index.html +++ b/docs/dev/fundamentals/cass-objects/relation/index.html @@ -20,7 +20,7 @@ - + @@ -87,6 +87,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-objects/relation/index.html.gz b/docs/dev/fundamentals/cass-objects/relation/index.html.gz index 7d9799edc..40ef923dc 100644 Binary files a/docs/dev/fundamentals/cass-objects/relation/index.html.gz and b/docs/dev/fundamentals/cass-objects/relation/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html index bf73bb8da..5a95e94d1 100644 --- a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html +++ b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html @@ -20,7 +20,7 @@ - + @@ -33,6 +33,6 @@

# RollupRule

TODO

- + diff --git a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz index 5619054d6..bf4310679 100644 Binary files a/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz and b/docs/dev/fundamentals/cass-objects/rollup-rule/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/create/index.html b/docs/dev/fundamentals/cass-repo-api/create/index.html index 07d6d9c23..6ca8d1f2a 100644 --- a/docs/dev/fundamentals/cass-repo-api/create/index.html +++ b/docs/dev/fundamentals/cass-repo-api/create/index.html @@ -20,7 +20,7 @@ - + @@ -143,6 +143,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/create/index.html.gz b/docs/dev/fundamentals/cass-repo-api/create/index.html.gz index c37503de8..dd7b15f23 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/create/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/create/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/delete/index.html b/docs/dev/fundamentals/cass-repo-api/delete/index.html index 383bafd21..df7876fad 100644 --- a/docs/dev/fundamentals/cass-repo-api/delete/index.html +++ b/docs/dev/fundamentals/cass-repo-api/delete/index.html @@ -20,7 +20,7 @@ - + @@ -78,6 +78,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz b/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz index 5e61535fa..53f4853a4 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/delete/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/get/index.html b/docs/dev/fundamentals/cass-repo-api/get/index.html index 8941b87f9..5cd862fc9 100644 --- a/docs/dev/fundamentals/cass-repo-api/get/index.html +++ b/docs/dev/fundamentals/cass-repo-api/get/index.html @@ -20,7 +20,7 @@ - + @@ -114,6 +114,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/get/index.html.gz b/docs/dev/fundamentals/cass-repo-api/get/index.html.gz index 715094ace..12d5d0c9f 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/get/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/get/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/index.html b/docs/dev/fundamentals/cass-repo-api/index.html index b47025fc9..ed1683f44 100644 --- a/docs/dev/fundamentals/cass-repo-api/index.html +++ b/docs/dev/fundamentals/cass-repo-api/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/index.html.gz b/docs/dev/fundamentals/cass-repo-api/index.html.gz index 742500d15..bddef9558 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/index.html.gz differ diff --git a/docs/dev/fundamentals/cass-repo-api/search/index.html b/docs/dev/fundamentals/cass-repo-api/search/index.html index c14657bb7..8a3fb5f41 100644 --- a/docs/dev/fundamentals/cass-repo-api/search/index.html +++ b/docs/dev/fundamentals/cass-repo-api/search/index.html @@ -20,7 +20,7 @@ - + @@ -84,6 +84,6 @@ →

- + diff --git a/docs/dev/fundamentals/cass-repo-api/search/index.html.gz b/docs/dev/fundamentals/cass-repo-api/search/index.html.gz index a697489f9..12db9f1b4 100644 Binary files a/docs/dev/fundamentals/cass-repo-api/search/index.html.gz and b/docs/dev/fundamentals/cass-repo-api/search/index.html.gz differ diff --git a/docs/dev/fundamentals/contacts/index.html b/docs/dev/fundamentals/contacts/index.html index 060826934..6e5e79fba 100644 --- a/docs/dev/fundamentals/contacts/index.html +++ b/docs/dev/fundamentals/contacts/index.html @@ -20,7 +20,7 @@ - + @@ -33,6 +33,6 @@

# Contacts

TODO

- + diff --git a/docs/dev/fundamentals/contacts/index.html.gz b/docs/dev/fundamentals/contacts/index.html.gz index 6325b3c30..373f5e44d 100644 Binary files a/docs/dev/fundamentals/contacts/index.html.gz and b/docs/dev/fundamentals/contacts/index.html.gz differ diff --git a/docs/dev/fundamentals/deployment/index.html b/docs/dev/fundamentals/deployment/index.html index 1e0ad102c..0344d2536 100644 --- a/docs/dev/fundamentals/deployment/index.html +++ b/docs/dev/fundamentals/deployment/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/fundamentals/deployment/index.html.gz b/docs/dev/fundamentals/deployment/index.html.gz index b11710b59..c1a4fd131 100644 Binary files a/docs/dev/fundamentals/deployment/index.html.gz and b/docs/dev/fundamentals/deployment/index.html.gz differ diff --git a/docs/dev/fundamentals/http-and-protocols/index.html b/docs/dev/fundamentals/http-and-protocols/index.html index 956703594..9b1d153fa 100644 --- a/docs/dev/fundamentals/http-and-protocols/index.html +++ b/docs/dev/fundamentals/http-and-protocols/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/fundamentals/http-and-protocols/index.html.gz b/docs/dev/fundamentals/http-and-protocols/index.html.gz index bf179ac5a..73c470921 100644 Binary files a/docs/dev/fundamentals/http-and-protocols/index.html.gz and b/docs/dev/fundamentals/http-and-protocols/index.html.gz differ diff --git a/docs/dev/fundamentals/identities-and-login/index.html b/docs/dev/fundamentals/identities-and-login/index.html index db3adad50..0d7db5f14 100644 --- a/docs/dev/fundamentals/identities-and-login/index.html +++ b/docs/dev/fundamentals/identities-and-login/index.html @@ -20,7 +20,7 @@ - + @@ -100,6 +100,6 @@ →

- + diff --git a/docs/dev/fundamentals/identities-and-login/index.html.gz b/docs/dev/fundamentals/identities-and-login/index.html.gz index 302934939..2984aee28 100644 Binary files a/docs/dev/fundamentals/identities-and-login/index.html.gz and b/docs/dev/fundamentals/identities-and-login/index.html.gz differ diff --git a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html index 0a900f0cf..284794c0c 100644 --- a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html +++ b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html @@ -20,7 +20,7 @@ - + @@ -55,6 +55,6 @@ →

- + diff --git a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz index 1e4eeeade..81245ace6 100644 Binary files a/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz and b/docs/dev/fundamentals/json-ld-and-rdf-formats/index.html.gz differ diff --git a/docs/dev/fundamentals/repositories/index.html b/docs/dev/fundamentals/repositories/index.html index a7e44cc0d..9749111c2 100644 --- a/docs/dev/fundamentals/repositories/index.html +++ b/docs/dev/fundamentals/repositories/index.html @@ -20,7 +20,7 @@ - + @@ -54,6 +54,6 @@ →

- + diff --git a/docs/dev/fundamentals/repositories/index.html.gz b/docs/dev/fundamentals/repositories/index.html.gz index 51539ba6c..9bc400323 100644 Binary files a/docs/dev/fundamentals/repositories/index.html.gz and b/docs/dev/fundamentals/repositories/index.html.gz differ diff --git a/docs/dev/fundamentals/search/index.html b/docs/dev/fundamentals/search/index.html index 49f1be308..4e70d1191 100644 --- a/docs/dev/fundamentals/search/index.html +++ b/docs/dev/fundamentals/search/index.html @@ -20,7 +20,7 @@ - + @@ -63,6 +63,6 @@ →

- + diff --git a/docs/dev/fundamentals/search/index.html.gz b/docs/dev/fundamentals/search/index.html.gz index f6dd43e60..e030075d9 100644 Binary files a/docs/dev/fundamentals/search/index.html.gz and b/docs/dev/fundamentals/search/index.html.gz differ diff --git a/docs/dev/fundamentals/urls-and-linked-data/index.html b/docs/dev/fundamentals/urls-and-linked-data/index.html index 2784c287a..f45b3fc96 100644 --- a/docs/dev/fundamentals/urls-and-linked-data/index.html +++ b/docs/dev/fundamentals/urls-and-linked-data/index.html @@ -20,7 +20,7 @@ - + @@ -48,6 +48,6 @@ →

- + diff --git a/docs/dev/fundamentals/urls-and-linked-data/index.html.gz b/docs/dev/fundamentals/urls-and-linked-data/index.html.gz index db7c3e2b7..89b5e0732 100644 Binary files a/docs/dev/fundamentals/urls-and-linked-data/index.html.gz and b/docs/dev/fundamentals/urls-and-linked-data/index.html.gz differ diff --git a/docs/dev/links-and-references/index.html b/docs/dev/links-and-references/index.html index 5e80c4794..6b50d2469 100644 --- a/docs/dev/links-and-references/index.html +++ b/docs/dev/links-and-references/index.html @@ -20,7 +20,7 @@ - + @@ -46,6 +46,6 @@ →

- + diff --git a/docs/dev/links-and-references/index.html.gz b/docs/dev/links-and-references/index.html.gz index 1379b071b..1ac8ef605 100644 Binary files a/docs/dev/links-and-references/index.html.gz and b/docs/dev/links-and-references/index.html.gz differ diff --git a/docs/dev/overview/index.html b/docs/dev/overview/index.html index 2d41507ac..0594400c9 100644 --- a/docs/dev/overview/index.html +++ b/docs/dev/overview/index.html @@ -20,7 +20,7 @@ - + @@ -44,6 +44,6 @@ →

- + diff --git a/docs/dev/overview/index.html.gz b/docs/dev/overview/index.html.gz index d8f082dc2..63ef35114 100644 Binary files a/docs/dev/overview/index.html.gz and b/docs/dev/overview/index.html.gz differ diff --git a/docs/dev/performance/index.html b/docs/dev/performance/index.html index e9e2be03f..4266d68e7 100644 --- a/docs/dev/performance/index.html +++ b/docs/dev/performance/index.html @@ -20,7 +20,7 @@ - + @@ -70,6 +70,6 @@ →

- + diff --git a/docs/dev/performance/index.html.gz b/docs/dev/performance/index.html.gz index 4329ae7b1..cb340ff0f 100644 Binary files a/docs/dev/performance/index.html.gz and b/docs/dev/performance/index.html.gz differ diff --git a/docs/dev/security/kbac-specification/index.html b/docs/dev/security/kbac-specification/index.html index be14a84c9..d891bd6c0 100644 --- a/docs/dev/security/kbac-specification/index.html +++ b/docs/dev/security/kbac-specification/index.html @@ -20,7 +20,7 @@ - + @@ -330,6 +330,6 @@ →

- + diff --git a/docs/dev/security/kbac-specification/index.html.gz b/docs/dev/security/kbac-specification/index.html.gz index 2c6a0955e..d0ea46203 100644 Binary files a/docs/dev/security/kbac-specification/index.html.gz and b/docs/dev/security/kbac-specification/index.html.gz differ diff --git a/docs/dev/security/kbac-threat-model/index.html b/docs/dev/security/kbac-threat-model/index.html index 3e087429a..be707374f 100644 --- a/docs/dev/security/kbac-threat-model/index.html +++ b/docs/dev/security/kbac-threat-model/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/security/kbac-threat-model/index.html.gz b/docs/dev/security/kbac-threat-model/index.html.gz index 6073e1ff4..6505d549a 100644 Binary files a/docs/dev/security/kbac-threat-model/index.html.gz and b/docs/dev/security/kbac-threat-model/index.html.gz differ diff --git a/docs/dev/tutorials/align-assessments-to-competencies/index.html b/docs/dev/tutorials/align-assessments-to-competencies/index.html index 10b0f2c69..88f389b5f 100644 --- a/docs/dev/tutorials/align-assessments-to-competencies/index.html +++ b/docs/dev/tutorials/align-assessments-to-competencies/index.html @@ -20,7 +20,7 @@ - + @@ -106,6 +106,6 @@ →

- + diff --git a/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz b/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz index 484ef2b29..3b9d8ae53 100644 Binary files a/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz and b/docs/dev/tutorials/align-assessments-to-competencies/index.html.gz differ diff --git a/docs/dev/tutorials/align-resources-to-competencies/index.html b/docs/dev/tutorials/align-resources-to-competencies/index.html index f5f23305e..a1653d021 100644 --- a/docs/dev/tutorials/align-resources-to-competencies/index.html +++ b/docs/dev/tutorials/align-resources-to-competencies/index.html @@ -20,7 +20,7 @@ - + @@ -62,6 +62,6 @@ →

- + diff --git a/docs/dev/tutorials/align-resources-to-competencies/index.html.gz b/docs/dev/tutorials/align-resources-to-competencies/index.html.gz index 88af6db23..2317346cb 100644 Binary files a/docs/dev/tutorials/align-resources-to-competencies/index.html.gz and b/docs/dev/tutorials/align-resources-to-competencies/index.html.gz differ diff --git a/docs/dev/tutorials/import-csv/index.html b/docs/dev/tutorials/import-csv/index.html index 40fb1462e..ed2da57bc 100644 --- a/docs/dev/tutorials/import-csv/index.html +++ b/docs/dev/tutorials/import-csv/index.html @@ -20,7 +20,7 @@ - + @@ -102,6 +102,6 @@ →

- + diff --git a/docs/dev/tutorials/import-csv/index.html.gz b/docs/dev/tutorials/import-csv/index.html.gz index 559ec9649..7af435c2e 100644 Binary files a/docs/dev/tutorials/import-csv/index.html.gz and b/docs/dev/tutorials/import-csv/index.html.gz differ diff --git a/docs/dev/tutorials/index.html b/docs/dev/tutorials/index.html index 005eda06e..c78c1aa7c 100644 --- a/docs/dev/tutorials/index.html +++ b/docs/dev/tutorials/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/dev/tutorials/index.html.gz b/docs/dev/tutorials/index.html.gz index eb8451992..8d2c3a656 100644 Binary files a/docs/dev/tutorials/index.html.gz and b/docs/dev/tutorials/index.html.gz differ diff --git a/docs/guide/assertion-processing/index.html b/docs/guide/assertion-processing/index.html index 264249c15..e18cc87dc 100644 --- a/docs/guide/assertion-processing/index.html +++ b/docs/guide/assertion-processing/index.html @@ -20,7 +20,7 @@ - + @@ -50,6 +50,6 @@ →

- + diff --git a/docs/guide/assertion-processing/index.html.gz b/docs/guide/assertion-processing/index.html.gz index e43c87775..9c595481d 100644 Binary files a/docs/guide/assertion-processing/index.html.gz and b/docs/guide/assertion-processing/index.html.gz differ diff --git a/docs/guide/interoperability/index.html b/docs/guide/interoperability/index.html index 6297fc31b..b83207b5a 100644 --- a/docs/guide/interoperability/index.html +++ b/docs/guide/interoperability/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@ →

- + diff --git a/docs/guide/interoperability/index.html.gz b/docs/guide/interoperability/index.html.gz index d0b6da550..4d4d578d6 100644 Binary files a/docs/guide/interoperability/index.html.gz and b/docs/guide/interoperability/index.html.gz differ diff --git a/docs/guide/introduction/index.html b/docs/guide/introduction/index.html index 47ccffd1d..7e9d7e14d 100644 --- a/docs/guide/introduction/index.html +++ b/docs/guide/introduction/index.html @@ -20,7 +20,7 @@ - + @@ -37,6 +37,6 @@ →

- + diff --git a/docs/guide/introduction/index.html.gz b/docs/guide/introduction/index.html.gz index c922b5d62..c983680c2 100644 Binary files a/docs/guide/introduction/index.html.gz and b/docs/guide/introduction/index.html.gz differ diff --git a/docs/guide/overview/index.html b/docs/guide/overview/index.html index 24c269d0d..5f86c7c4a 100644 --- a/docs/guide/overview/index.html +++ b/docs/guide/overview/index.html @@ -20,7 +20,7 @@ - + @@ -43,6 +43,6 @@ →

- + diff --git a/docs/guide/overview/index.html.gz b/docs/guide/overview/index.html.gz index b9669dda3..5ee3b393a 100644 Binary files a/docs/guide/overview/index.html.gz and b/docs/guide/overview/index.html.gz differ diff --git a/docs/index.html b/docs/index.html index 95dcbdc70..6bddc3d80 100644 --- a/docs/index.html +++ b/docs/index.html @@ -20,7 +20,7 @@ - + @@ -41,6 +41,6 @@

- + diff --git a/docs/index.html.gz b/docs/index.html.gz index dd3b8f780..a61dc0f86 100644 Binary files a/docs/index.html.gz and b/docs/index.html.gz differ diff --git a/index.html b/index.html index 1b21e2b30..72c54351d 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -CASS Editor VERSION
\ No newline at end of file +CASS Editor VERSION
\ No newline at end of file diff --git a/index.html.gz b/index.html.gz index d08135066..51aff150d 100644 Binary files a/index.html.gz and b/index.html.gz differ diff --git a/js/app.b477de77.js b/js/app.8edea742.js similarity index 99% rename from js/app.b477de77.js rename to js/app.8edea742.js index a0d8fb583..8de74a95c 100644 --- a/js/app.b477de77.js +++ b/js/app.8edea742.js @@ -6175,10 +6175,10 @@ jsonld.documentLoader = /*#__PURE__*/function () { framework = this.$store.getters['editor/framework']; } var defaultLanguage; - if (framework && framework["ceasn:inLanguage"]) { - defaultLanguage = EcArray.isArray(framework["ceasn:inLanguage"]) ? framework["ceasn:inLanguage"][0] : framework["ceasn:inLanguage"]; - } else if (framework && framework["schema:inLanguage"]) { + if (framework && framework["schema:inLanguage"]) { defaultLanguage = EcArray.isArray(framework["schema:inLanguage"]) ? framework["schema:inLanguage"][0] : framework["schema:inLanguage"]; + } else if (framework && framework["ceasn:inLanguage"]) { + defaultLanguage = EcArray.isArray(framework["ceasn:inLanguage"]) ? framework["ceasn:inLanguage"][0] : framework["ceasn:inLanguage"]; } else if (framework && framework["dcterms:language"]) { defaultLanguage = EcArray.isArray(framework["dcterms:language"]) ? framework["dcterms:language"][0] : framework["dcterms:language"]; } else if (navigator.language || navigator.userLanguage) { @@ -7169,4 +7169,4 @@ module.exports = JSON.parse("{\"a\":\"1.5.71\"}"); /***/ }) /******/ }); -//# sourceMappingURL=app.b477de77.js.map \ No newline at end of file +//# sourceMappingURL=app.8edea742.js.map \ No newline at end of file diff --git a/js/app.b477de77.js.gz b/js/app.8edea742.js.gz similarity index 85% rename from js/app.b477de77.js.gz rename to js/app.8edea742.js.gz index 486f6ae4f..f10a69d8e 100644 Binary files a/js/app.b477de77.js.gz and b/js/app.8edea742.js.gz differ diff --git a/js/app.b477de77.js.map b/js/app.8edea742.js.map similarity index 99% rename from js/app.b477de77.js.map rename to js/app.8edea742.js.map index de43f5ceb..55b08d992 100644 --- a/js/app.b477de77.js.map +++ b/js/app.8edea742.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///crypto (ignored)?680d","webpack:///buffer (ignored)?3b56","webpack:///buffer (ignored)?9f36","webpack:///rdf-canonize-native (ignored)?d49c","webpack:///./util.inspect (ignored)","webpack:///rdf-canonize-native (ignored)","webpack:///got (ignored)","webpack:///./src/components/modals/DynamicModal.vue","webpack:///src/components/modals/DynamicModal.vue","webpack:///./src/components/modals/DynamicModal.vue?2a07","webpack:///./src/components/modals/DynamicModal.vue?da8f","webpack:///./src/App.vue","webpack:///./src/App.vue?11bf","webpack:///./src/App.vue?315a","webpack:///util (ignored)?9bcf","webpack:///./src/App.vue?dfa2","webpack:///./src/router.js","webpack:///./src/store/modules/editor.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/user.js","webpack:///./src/store/modules/crosswalk.js","webpack:///./src/store/modules/environment.js","webpack:///./src/store/modules/configuration.js","webpack:///./src/store/modules/featuresEnabled.js","webpack:///./src/store/index.js","webpack:///util (ignored)?6457","webpack:///./src/components/modals/DynamicModal.vue?79f9","webpack:///./src/scss/theme.scss?d965","webpack:///./src/main.js","webpack:///buffer (ignored)","webpack:///./src/components/modals/DynamicModal.vue?fef9","webpack:///crypto (ignored)","webpack:///util (ignored)","webpack:///src/App.vue","webpack:///./src/store/modules/lode.js","webpack:///./src/mixins/common.js","webpack:///util (ignored)?1ada","webpack:///./src/App.vue?b442","webpack:///./src/scss/styles.scss?e7a7"],"names":["render","_vm","_c","_self","dynamicModal","tag","attrs","title","dynamicModalContent","on","createDirectory","$event","$emit","createAnotherDirectory","close","cancel","staticRenderFns","name","props","type","default","String","color","components","Share","MultiEdit","SearchModal","AddComment","DeleteCommentConfirm","DeleteDirectoryConfirm","SupportedImportDetails","Single","AddDirectory","DeleteConfigurationConfirm","FrameworkConfiguration","DeleteCompetencyConfirm","DeleteFrameworkConfirm","DeleteLevelConfirm","DeleteConceptConfirm","DeleteConceptSchemeConfirm","RemoveCompetencyConfirm","ExportOptionsModal","RequiredPropertyModal","DuplicateImport","ImportError","ShareAssertions","LogoutSuccess","MessageOfTheDay","data","computed","showModal","$store","getters","component","watch","class","editorClass","bannerMessage","staticClass","style","bannerStyle","_v","_s","_e","saveDirectory","saveDirectoryAndAddAnother","showSideNav","showRightAside","createNewFramework","createNewConceptScheme","createNewProgressionModel","createNewCollection","Vue","use","Router","base","process","scrollBehavior","to","from","savedPosition","hash","selector","offset","x","y","routes","path","_default","sidebar","topbar","alias","Vuex","state","framework","organization","selectedCompetency","queryParams","defaultLanguage","webSocketBackoff","selectCompetencyRelation","selectingCompetencies","private","newCompetency","newFramework","t3Profile","changedObject","configuration","commonPathIframe","iframeCompetencyPathInterframework","iframeConceptPath","addCommentAboutId","addCommentType","commentToEdit","commentToReply","frameworkCommentDataLoaded","frameworkCommentList","frameworkCommentPersonMap","commentsToDelete","commentScrollTo","editsToUndo","lastEditToUndo","recomputeHierarchy","recomputePrecedence","recomputePrecedenceAfterReorder","selectedCompetenciesAsProperties","refreshLevels","refreshAlignments","refreshProperties","conceptMode","collectionMode","progressionMode","cutId","copyId","paste","cutOrCopyContainerId","nodeInFocus","relations","setPropertyLevel","addAnother","itemToDelete","itemToRemove","itemToExport","manageAssertions","assertions","badgePk","me","subject","people","firstSearchProcessing","searchingAssertions","mutations","f","comp","params","lang","webSocketBackoffIncrease","_private","bool","r","id","config","val","setAddCommentAboutId","setAddCommentType","setCommentToEdit","setCommentToReply","setCommentsToDelete","clearFrameworkCommentData","setFrameworkCommentDataLoaded","setFrameworkCommentList","setFrameworkCommentPersonMap","setCommentScrollTo","addEditsToUndo","edits","push","setLastEditToUndo","edit","boolean","comps","obj","level","setItemToDelete","setItemToRemove","setItemToExport","setManageAssertions","setAssertions","removeAssertion","EcArray","setRemove","removeAssertionAtIndex","splice","addAssertion","setAdd","setBadgePk","setMe","setSubject","setPeople","setFirstSearchProcessing","setSearchingAssertions","actions","getDirectoryChildren","instance","directory","children","frameworks","apply","_toConsumableArray","resources","directories","context","commit","pop","getThing","payload","Promise","resolve","reject","url","EcRemote","urlAppend","server","service","upgradeHttpToHttps","fetch","headers","then","resp","success","catch","err","failure","searchForAssertions","doSearch","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","start","count","wrap","_callee2$","_context2","prev","next","abrupt","EcAssertion","search","window","repo","_ref2","_callee","results","_callee$","_context","length","stop","_x3","arguments","size","_x","_x2","eah","EcAsyncHelper","each","assertion","callback","assertionDateDecrypted","getAssertionDateAsync","date","appError","computeBecause","evidences","explanations","e","evidenceString","eoriginal","startsWith","JSON","parse","EcObject","isObject","verb","display","en","object","definition","result","Math","round","score","scaled","interactionType","text","original","failureFunc","EcRepository","get","isAny","ChooseAction","getTypes","creativeWork","sort","a","b","getMe","getSubject","namespaced","sideNavEnabled","rightAsideContent","rightAsideObject","canViewComments","canAddComments","pluginLastUpdate","pluginToLaunch","pluginToLaunchLastUpdate","showToolBar","commentsEnabled","versionsEnabled","draggingEnabled","isDragging","draggable","contentSection","searchTerm","quickFilters","applySearchTo","sortResults","refreshSearch","searchFrameworksInCompetencySearch","modal","objForShareModal","directoryList","selectedDirectory","searchingInDirectory","editDirectory","import","files","transition","status","fileType","firstImport","Boolean","errors","feedback","duplicates","skip","serverUrl","frameworkName","frameworkDescription","importCsv","nameColumn","descriptionColumn","scopeColumn","idColumn","sourceColumn","relationColumn","targetColumn","importText","csvColumns","csvRelationColumns","csvRelationFile","importModalParams","allowCancel","banner","message","background","motd","curatedPlugins","closeSideNav","closeRightAside","_rightAsideObject","encryptedType","t0","EcEncryptedValue","fromEncryptedValue","t1","sent","copyFrom","call","closeModal","value","importFiles","setCanViewComments","setCanAddComments","clearImportFiles","resetImport","descriptionCcolumn","importTransition","importFileType","importType","addImportError","clearImportErrors","importStatus","importAllowCancel","importFeedback","importDuplicates","importSkip","importFramework","importFrameworkName","importFrameworkNameColumn","frameworkNameColumn","importFrameworkScopeColumn","frameworkScopeColumn","importFrameworkIdColumn","frameworkIdColumn","importFrameworkDescription","importServerUrl","importUrl","importNameColumn","importDescriptionColumn","importScopeColumn","importSourceColumn","importTargetColumn","importRelationColumn","importIdColumn","singleQuickFilter","i","findIndex","filter","checked","clearSearchFilters","_i","_i2","selectDirectory","list","setBanner","setMotd","setCuratedPlugins","clearImport","refreshDirectories","directoryIds","paramObj","EcDirectory","dirs","canEditAny","EcIdentityManager","getMyPks","has","importErrors","filterByOwnedByMe","find","Array","isArray","filterByNotOwnedByMe","filterByConfigMatchDefault","bannerColor","bannerBackground","motdTitle","motdMessage","loggedOnPerson","repoInit","ssoLogin","ssoLogout","ssoPublicKey","lastLogin","personObj","ids","repositorySsoOptions","step","frameworkSource","frameworkSourceRelationships","frameworkTarget","frameworkTargetRelationships","relevantExistingAlignmentsMap","relevantExistingAlignmentsMapLastUpdate","alignedCompetenciesList","workingAlignmentsMap","source","targets","initialTargets","removedTargets","changed","alignmentsToSave","alignmentsToDelete","sourceState","targetState","targetNodesToHighlight","enabledRelationshipTypes","enabledRelationshipTypesLastUpdate","workingAlignmentsSource","c","workingAlignmentsTargets","workingAlignmentsType","s","t","populateAlignedCompetenciesList","alignedCompetencies","sourceComps","Object","keys","_sourceComps","sc","alignTypes","_alignTypes","scAt","targetIds","_i3","_targetIds","ti","populateWorkingAlignmentMap","sourceTypeAlignMap","_i4","_targetIds2","resetFrameworkSourceRelationships","resetFrameworkTargetRelationships","resetCrosswalkFrameworks","resetCrosswalkAlignmentsAndState","resetCrosswalk","resetWorkingAlignmentsMap","addWorkingAlignmentsTarget","remTargets","filteredRemovedTargets","shouldSetToChanged","_iterator","_createForOfIteratorHelper","_step","n","done","includes","removeWorkingAlignmentsTarget","filtered","target","_iterator2","_step2","removeAlignmentFromRelevantAlignmentsMap","alignProps","ream","addAlignmentToRelevantAlignmentsMap","ecaObj","relationType","removeAlignmentFromAlignmentsToSave","newAts","_iterator3","_step3","removeAlignmentFromAlignmentsToDelete","newAtd","_iterator4","_step4","appendAlignmentsToDelete","alignment","appendAlignmentsToSave","cassApiLocation","CONFIG_SEARCH_SIZE","DEFAULT_CONFIGURATION_TYPE","DEFAULT_CONFIGURATION_CONTEXT","LANG_STRING_RANGE","DEFAULT_HEADING","LEVEL_SEARCH_SIZE","PERSON_SEARCH_SIZE","DEFAULT_CUSTOM_PROPERTY_CONTEXT","DEFAULT_CUSTOM_PROPERTY_RANGE","defaultBrowserConfig","defaultBrowserConfigName","localDefaultBrowserConfig","configBusy","configList","configView","currentConfig","showConfirmDeleteConfigModal","showMustBeLoggedInModal","showBrowserConfigSetModal","configToDelete","availableConcepts","setConfigToDelete","setShowMustBeLoggedInModal","setShowBrowserConfigSetModal","setShowConfirmDeleteConfigModal","setCurrentConfig","setConfigView","setConfigList","setConfigBusy","setDefaultBrowserConfig","setDefaultBrowserConfigName","setLocalDefaultBrowserConfig","setAvailableConcepts","setAvailableTypes","availableTypes","GROUP_SEARCH_SIZE","crosswalkEnabled","userManagementEnabled","configurationsEnabled","searchByOwnerNameEnabled","pluginsEnabled","loginEnabled","legacyLoginEnabled","apiLoginEnabled","shareEnabled","shareLink","ownedByMe","Store","modules","lode","editor","app","user","crosswalk","environment","featuresEnabled","VueScrollTo","require","_global","global","originalFetch","PENDING_REQUESTS","MAX_REQUESTS_COUNT","INTERVAL_MS","_len","args","_key","resource","response","_args","setTimeout","_global2","values","max","finish","UUID","options","failedColor","thickness","speed","opacity","termination","autoRevert","location","inverse","VueProgressBar","Clipboard","container","duration","easing","force","cancelable","onStart","onDone","onCancel","InfiniteLoading","VueResource","VueObserveVisibility","AsyncComputed","directive","bind","element","binding","vnode","clickOutsideEvent","event","contains","expression","document","body","addEventListener","unbind","removeEventListener","caching","cachingL2","productionTip","warnHandler","msg","vm","trace","appLog","hashSplit","split","o","paramString","parts","decodeURIComponent","replace","router","store","h","App","$mount","mixins","common","DynamicModal","navBarActive","itemsSaving","showNav","linkedPerson","addAnotherDirectory","appVersion","version","$router","beforeDestroy","cappend","messageListener","methods","initializeApp","_this","origin","VUE_APP_SELECTEDSERVER","$route","query","stringify","key","endsWith","concepts","ceasnDataFields","show","selectedServer","init","readContacts","readIdentities","findLinkedPersonForIdentity","defaultPlugins","plugins","loginInfo","pers","ppk","ident","per","fetchServerAdminKeys","ssoViaP1","corsOrigins","EcPerson","getByPk","toPk","displayName","getName","ssoAdditionalPublicKeys","EcPpkFacade","fromPem","EcIdentity","addIdentity","dispatch","openWebSocket","attachEvent","loadIdentity","frameworkId","EcConceptScheme","canViewCommentsCurrentFramework","canAddCommentsCurrentFramework","EcFramework","directoryId","action","createNew","frameworksPage","collections","parent","oHead","getElementsByTagName","arrStyleSheets","tagName","toLowerCase","attributes","inherit","appendChild","cloneNode","importParentStyles","css","ss","createElement","rel","href","types","_loop","_types","schemata","undefined","indexOf","index","substring","pathname","getExpectingObject","expanded","jsonld","expand","getExpectingString","EcPk","onSidebarEvent","findLinkedPersonPersonSearchSuccess","findLinkedPersonPersonSearchFailure","ecRemoteLda","matchingPersonRecordFound","ecrld","ep","getGuid","equals","fingerprint","addGroupIdentities","searchRepositoryForGroupsSuccess","ecoa","linkedPersonShortId","shortId","eco","employee","addGroupIdentity","searchRepositoryForGroupsFailure","EcOrganization","_addGroupIdentity","_callee3","group","groupPpkSet","gPpk","grpIdent","_callee3$","_context3","getOrgKeys","addIdentityQuietly","dir","generateId","addOwner","Date","toISOString","save","$nextTick","currentRoute","selectedIds","selected","competencies","highlightCompetency","select","connection","webSocketOverride","WebSocket","onopen","onerror","error","onclose","evt","_ref3","_callee4","wut","com","_callee4$","_context4","getAssertionDate","ConceptScheme","isA","getFullType","setDefaultLanguage","spitEvent","t2","t3","Concept","EcConcept","t4","t5","EcCompetency","t6","t7","EcLevel","t8","t9","_x4","onmessage","cache","EcRemoteLinkedData","trimVersionFromUrl","veryShortId","EcCrypto","md5","precache","_createNewFramework","_callee5","optionalDirectory","saveFramework","_callee5$","_context5","newObjectEndpoint","generateShortId","owner","reader","toEncryptedValue","saveTo","_x5","_createNewCollection","_callee6","_callee6$","_context6","subType","_createNewConceptScheme","_callee7","_callee7$","_context7","_createNewProgressionModel","_callee8","_callee8$","_context8","identity","EcPpk","generateKeyAsync","p1","onIdentityChanged","saveIdentities","inIframe","fun","postMessage","_messageListener","_callee9","d","v","link","fid","guid","_callee9$","_context9","template","removeNewlines","competency","conceptScheme","concept","encryptOnSaveMap","schema","shouldTryUrl","format","_x6","entity","toPem","attachUrlProperties","_attachUrlProperties","_callee10","thing","_callee10$","_context10","_x7","copyOrLink","choice","copyCompetencies","appendCompetencies","_copyCompetencies","_callee11","copyDict","j","child","_callee11$","_context11","addReader","Task","asyncImmediate","addCompetency","afterCopy","addLevel","EcAlignment","addRelation","Relation","NARROWS","_x8","_afterCopy","_callee12","_callee12$","_context12","_appendCompetencies","_callee14","newLink","_callee14$","_context14","_callee13","_callee13$","_context13","_x9","_x10","parentStyleSheets","styleSheets","cssString","cssRules","ownerNode","countJ","cssText","innerHTML","ex","self","top","_objectSpread","isLoggedIn","loggedInPerson","currentPathIsLogin","mapState","mounted","navigationTo","isSavingProperty","isSavingThing","isAddingProperty","addingProperty","addingValues","addingRange","addingChecked","removeAddingValueAtIndex","schemataLookup","rawSchemata","schemaFallback","objectModel","competencySearchModalOpen","numPropertyComponentsVisible","searchType","includeRelations","scheme","domainType","om","setIsSavingProperty","setIsSavingThing","setIsAddingProperty","setAddingProperty","setAddingValues","newValues","forEach","newValue","trimUrl","addToAddingValues","setAddingRange","setAddingChecked","setSchemata","setSchemataLookup","setEmptySchemataLookup","setObjectModel","incrementNumPropertyComponents","thingId","decrementNumPropertyComponents","trimmed","slice","documentLoader","xmlhttp","originalUrl","ending","contextUrl","documentUrl","XMLHttpRequest","onreadystatechange","readyState","responseText","lastIndexOf","open","setRequestHeader","send","conceptCtids","conceptRegistryUrls","ctids","getCTID","registryURLs","ceasnRegistryUriTransform","item","isAdmin","adminKeys","userIds","userId","userKey","adminKey","getConceptCtids","_getConceptCtids","subCtids","ary","getConceptRegistryUrls","_getConceptRegistryUrls","subURLs","page","Thing","getDisplayStringFrom","compName","selectedFramework","selectedFrameworkObject","toJson","selectedCompetencyObject","selectedFrameworkName","selectedCompetencyName","visiblePage","selectedFrameworkCtid","matches","selectedCompetencyCtid","navigator","language","userLanguage","xhr","httpStatus","xhrx","onload","timeout","httpGet","resolveNameFromUrl","langs","conditionalDelete","depth","deleteRegistered","selectButton","_selectButton","selectedArray","relation","currentFramework","_success","selectVerbose","selectExport","selectRelations","_addLevel","optionalLevelUrlOrName","initialLevels","operation","fieldChanged","initialValue","changedValue","saveCheckedLevels","_saveCheckedLevels","checkedOptions","allOptions","competencyId","frameworkChanged","initialComp","levelChanged","_levelChanged","_each","_saveFramework","removeLevelFromFramework","_removeLevelFromFramework","levelId","removeLevel","addRelationsToFramework","_addRelationsToFramework","property","addAlignments","_x11","_x12","_x13","_addAlignments","allowSave","urlProperties","addConceptAlignments","addRelationAsCompetencyField","_ref5","initialRelations","dosedo","isNew","idx","res","rej","_x18","_x19","_x14","_x15","_x16","_x17","_addRelationAsCompetencyField","_callee16","_this2","_callee16$","_context16","_ref6","_callee15","_callee15$","_context15","_x24","_x25","_x20","_x21","_x22","_x23","removeRelationFromFramework","_removeRelationFromFramework","_callee18","_this3","_callee18$","_context18","removeRelation","_callee17","_callee17$","_context17","_x26","_x27","_x28","uri","endpoint","ctid","uuid","lop","toPrettyDateString","dateInMilliseconds","dateFormat"],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,4CAA4C,gjBAAgjB,6BAA6B,m5DAAm5D;QAC5gF;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA,2BAA2B,gjBAAgjB,6BAA6B,m5DAAm5D;QAC3/E;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1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","file":"js/app.b477de77.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\",\"concepts\":\"concepts\",\"organizations\":\"organizations\",\"directory\":\"directory\",\"crosswalk\":\"crosswalk\",\"import\":\"import\",\"organization\":\"organization\",\"framework\":\"framework\",\"conceptScheme\":\"conceptScheme\",\"progressionModel\":\"progressionModel\",\"configurationEditor\":\"configurationEditor\",\"forbidden\":\"forbidden\",\"internalError\":\"internalError\",\"login\":\"login\",\"pluginContainer\":\"pluginContainer\",\"pluginManager\":\"pluginManager\",\"sidenav\":\"sidenav\",\"timeline\":\"timeline\",\"topbar\":\"topbar\",\"userGroupEditor\":\"userGroupEditor\",\"welcome\":\"welcome\"}[chunkId]||chunkId) + \".\" + {\"about\":\"ce88494c\",\"chunk-08264f73\":\"48a0f212\",\"chunk-0e513d16\":\"4d386889\",\"chunk-22f5d1ea\":\"d2e29ef4\",\"chunk-28a7ff35\":\"8dad3d2d\",\"chunk-2d0a4fe9\":\"2d9d3b68\",\"chunk-2d0d5fe2\":\"c23b5ea1\",\"chunk-576b8942\":\"1fd0ba48\",\"chunk-2d22bdc1\":\"15cc543d\",\"concepts\":\"6c8c824e\",\"organizations\":\"b6e8c311\",\"directory\":\"386d576a\",\"chunk-6a6fd63e\":\"f58ffc5b\",\"chunk-19b164da\":\"255ec70f\",\"chunk-20a58e6e\":\"a896c8e8\",\"chunk-6f4ecce2\":\"7af8124c\",\"crosswalk\":\"e5b1b5a6\",\"import\":\"5816fd4f\",\"organization\":\"7e81cba5\",\"chunk-2d21ecda\":\"9a480e8e\",\"framework\":\"f5756d9a\",\"conceptScheme\":\"b37b17cd\",\"progressionModel\":\"a3cf99c0\",\"chunk-32471621\":\"d8044aa6\",\"chunk-36a8ba44\":\"fd190468\",\"chunk-3c39b703\":\"8a3e6ca5\",\"chunk-43880ac8\":\"e6388a80\",\"chunk-4a268576\":\"bc8e0cae\",\"chunk-51c654a1\":\"a972a7d0\",\"chunk-61b7344a\":\"8076901f\",\"chunk-2d0b2ce8\":\"41b4ffb3\",\"configurationEditor\":\"070eb19d\",\"chunk-661fb5db\":\"7aa69358\",\"chunk-693a040c\":\"1fb1a8bc\",\"chunk-6e63f303\":\"90738da3\",\"chunk-719eeaef\":\"19b4158b\",\"chunk-789a5742\":\"ef86967f\",\"chunk-af56af32\":\"fa29d992\",\"chunk-b37cb348\":\"3dd92583\",\"chunk-b787821e\":\"a99e6e5e\",\"chunk-db457718\":\"9f6156aa\",\"chunk-de13755a\":\"f4014b9a\",\"forbidden\":\"a2903dab\",\"internalError\":\"9fbf136c\",\"login\":\"e8ce8d0d\",\"pluginContainer\":\"d2515e2c\",\"pluginManager\":\"9df61991\",\"sidenav\":\"17ea0ac7\",\"timeline\":\"f65ac329\",\"topbar\":\"a7be248e\",\"userGroupEditor\":\"a3596233\",\"welcome\":\"f44bade4\",\"chunk-05c5f49a\":\"ba02a67b\",\"chunk-25a2af2a\":\"f2d08b9f\",\"chunk-2d0cbec1\":\"38da7d9f\",\"chunk-762e84e9\":\"1b983961\",\"chunk-dc2b4b7e\":\"ae362b5e\",\"chunk-4f51c21e\":\"d0ea6ed0\",\"chunk-74a95bb3\":\"7742bf01\",\"chunk-4a5f46a6\":\"cb0fd2a0\",\"chunk-4cf587c0\":\"4fe64b26\",\"chunk-0e6d8a6f\":\"00a54992\",\"chunk-6b291276\":\"14f7fda8\",\"chunk-4f4121a7\":\"d5d5e6c3\",\"chunk-2d0ddf90\":\"790a667f\",\"chunk-2d0dab46\":\"23fb2f77\",\"chunk-c5459254\":\"c3477103\",\"chunk-57b7a046\":\"8b1beb87\",\"chunk-4f8e6938\":\"6fa8d825\",\"chunk-9dddac98\":\"e59e7af5\",\"chunk-2d0daac9\":\"f40720b8\",\"chunk-2d21eb37\":\"a4d2fe84\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-08264f73\":1,\"chunk-0e513d16\":1,\"chunk-22f5d1ea\":1,\"chunk-28a7ff35\":1,\"chunk-576b8942\":1,\"concepts\":1,\"organizations\":1,\"directory\":1,\"chunk-6a6fd63e\":1,\"chunk-19b164da\":1,\"chunk-20a58e6e\":1,\"chunk-6f4ecce2\":1,\"crosswalk\":1,\"import\":1,\"organization\":1,\"framework\":1,\"conceptScheme\":1,\"progressionModel\":1,\"chunk-32471621\":1,\"chunk-36a8ba44\":1,\"chunk-3c39b703\":1,\"chunk-43880ac8\":1,\"chunk-4a268576\":1,\"chunk-51c654a1\":1,\"chunk-61b7344a\":1,\"configurationEditor\":1,\"chunk-661fb5db\":1,\"chunk-693a040c\":1,\"chunk-6e63f303\":1,\"chunk-719eeaef\":1,\"chunk-789a5742\":1,\"chunk-af56af32\":1,\"chunk-b37cb348\":1,\"chunk-b787821e\":1,\"chunk-db457718\":1,\"chunk-de13755a\":1,\"forbidden\":1,\"internalError\":1,\"login\":1,\"pluginContainer\":1,\"pluginManager\":1,\"sidenav\":1,\"timeline\":1,\"userGroupEditor\":1,\"chunk-05c5f49a\":1,\"chunk-25a2af2a\":1,\"chunk-762e84e9\":1,\"chunk-dc2b4b7e\":1,\"chunk-4f51c21e\":1,\"chunk-4cf587c0\":1,\"chunk-0e6d8a6f\":1,\"chunk-4f4121a7\":1,\"chunk-c5459254\":1,\"chunk-57b7a046\":1,\"chunk-4f8e6938\":1,\"chunk-9dddac98\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"about\":\"about\",\"concepts\":\"concepts\",\"organizations\":\"organizations\",\"directory\":\"directory\",\"crosswalk\":\"crosswalk\",\"import\":\"import\",\"organization\":\"organization\",\"framework\":\"framework\",\"conceptScheme\":\"conceptScheme\",\"progressionModel\":\"progressionModel\",\"configurationEditor\":\"configurationEditor\",\"forbidden\":\"forbidden\",\"internalError\":\"internalError\",\"login\":\"login\",\"pluginContainer\":\"pluginContainer\",\"pluginManager\":\"pluginManager\",\"sidenav\":\"sidenav\",\"timeline\":\"timeline\",\"topbar\":\"topbar\",\"userGroupEditor\":\"userGroupEditor\",\"welcome\":\"welcome\"}[chunkId]||chunkId) + \".\" + {\"about\":\"31d6cfe0\",\"chunk-08264f73\":\"60471a70\",\"chunk-0e513d16\":\"6fe35a3d\",\"chunk-22f5d1ea\":\"60471a70\",\"chunk-28a7ff35\":\"60471a70\",\"chunk-2d0a4fe9\":\"31d6cfe0\",\"chunk-2d0d5fe2\":\"31d6cfe0\",\"chunk-576b8942\":\"cebd8586\",\"chunk-2d22bdc1\":\"31d6cfe0\",\"concepts\":\"63711a5c\",\"organizations\":\"1d9c1cec\",\"directory\":\"03b7840c\",\"chunk-6a6fd63e\":\"d8e69eab\",\"chunk-19b164da\":\"235fd082\",\"chunk-20a58e6e\":\"4e4b1ad0\",\"chunk-6f4ecce2\":\"c2caed3c\",\"crosswalk\":\"b12a891a\",\"import\":\"6e874160\",\"organization\":\"2f85a467\",\"chunk-2d21ecda\":\"31d6cfe0\",\"framework\":\"68516d6d\",\"conceptScheme\":\"75a8af1c\",\"progressionModel\":\"75a8af1c\",\"chunk-32471621\":\"60471a70\",\"chunk-36a8ba44\":\"60471a70\",\"chunk-3c39b703\":\"60471a70\",\"chunk-43880ac8\":\"60471a70\",\"chunk-4a268576\":\"60471a70\",\"chunk-51c654a1\":\"daa4e784\",\"chunk-61b7344a\":\"d0a47e88\",\"chunk-2d0b2ce8\":\"31d6cfe0\",\"configurationEditor\":\"aa42073b\",\"chunk-661fb5db\":\"60471a70\",\"chunk-693a040c\":\"60471a70\",\"chunk-6e63f303\":\"60471a70\",\"chunk-719eeaef\":\"369d5d3a\",\"chunk-789a5742\":\"60471a70\",\"chunk-af56af32\":\"60471a70\",\"chunk-b37cb348\":\"73ccae3d\",\"chunk-b787821e\":\"60471a70\",\"chunk-db457718\":\"60471a70\",\"chunk-de13755a\":\"73ccae3d\",\"forbidden\":\"1b0a0109\",\"internalError\":\"7f0e233f\",\"login\":\"be292f08\",\"pluginContainer\":\"ae42be31\",\"pluginManager\":\"7dbcc073\",\"sidenav\":\"e0b4a456\",\"timeline\":\"4070750e\",\"topbar\":\"31d6cfe0\",\"userGroupEditor\":\"83fefc67\",\"welcome\":\"31d6cfe0\",\"chunk-05c5f49a\":\"a2bf2d06\",\"chunk-25a2af2a\":\"60471a70\",\"chunk-2d0cbec1\":\"31d6cfe0\",\"chunk-762e84e9\":\"0b1a74d3\",\"chunk-dc2b4b7e\":\"60471a70\",\"chunk-4f51c21e\":\"a478a2a2\",\"chunk-74a95bb3\":\"31d6cfe0\",\"chunk-4a5f46a6\":\"31d6cfe0\",\"chunk-4cf587c0\":\"c8484769\",\"chunk-0e6d8a6f\":\"cc85466d\",\"chunk-6b291276\":\"31d6cfe0\",\"chunk-4f4121a7\":\"dfa2d379\",\"chunk-2d0ddf90\":\"31d6cfe0\",\"chunk-2d0dab46\":\"31d6cfe0\",\"chunk-c5459254\":\"6bbc8dd3\",\"chunk-57b7a046\":\"39963b5a\",\"chunk-4f8e6938\":\"c8484769\",\"chunk-9dddac98\":\"c8484769\",\"chunk-2d0daac9\":\"31d6cfe0\",\"chunk-2d21eb37\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c(_vm.dynamicModal,{tag:\"Component\",attrs:{\"title\":_vm.title,\"view\":\"modal\",\"content\":_vm.dynamicModalContent},on:{\"create-directory\":function($event){return _vm.$emit('create-directory', $event)},\"create-another-directory\":function($event){return _vm.$emit('create-another-directory', $event)},\"close\":function($event){return _vm.$emit('app/closeModal')},\"cancel\":function($event){return _vm.$emit('app/closeModal')}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicModal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DynamicModal.vue?vue&type=template&id=704681ec\"\nimport script from \"./DynamicModal.vue?vue&type=script&lang=js\"\nexport * from \"./DynamicModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./DynamicModal.vue?vue&type=style&index=0&id=704681ec&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.editorClass,attrs:{\"id\":\"app\"}},[(_vm.bannerMessage)?_c('div',{staticClass:\"banner\",style:(_vm.bannerStyle)},[_c('span',[_vm._v(_vm._s(_vm.bannerMessage))])]):_vm._e(),_c('DynamicModal',{on:{\"create-directory\":_vm.saveDirectory,\"create-another-directory\":_vm.saveDirectoryAndAddAnother}}),_c('router-view',{class:[{ 'clear-side-bar': _vm.showSideNav}, { 'clear-narrow-side-bar': !_vm.showSideNav}, {'clear-right-aside': _vm.showRightAside}],on:{\"create-new-framework\":_vm.createNewFramework,\"create-new-concept-scheme\":_vm.createNewConceptScheme,\"create-new-progression-model\":_vm.createNewProgressionModel,\"create-new-collection\":_vm.createNewCollection}}),_c('router-view',{attrs:{\"showSideNav\":_vm.showSideNav,\"name\":\"sidebar\"},on:{\"create-new-framework\":_vm.createNewFramework,\"create-new-concept-scheme\":_vm.createNewConceptScheme,\"create-new-progression-model\":_vm.createNewProgressionModel,\"create-new-collection\":_vm.createNewCollection}}),_c('vue-progress-bar'),(_vm.bannerMessage)?_c('div',{staticClass:\"banner banner-bot\",style:(_vm.bannerStyle)},[_c('span',[_vm._v(_vm._s(_vm.bannerMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=201f034a\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=201f034a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* (ignored) */","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=201f034a&prod&lang=scss\"","import Vue from 'vue';\nimport Router from 'vue-router';\n\n\nVue.use(Router);\nexport default new Router({\n base: process.env.BASE_URL,\n scrollBehavior(to, from, savedPosition) {\n if (to.hash) {\n return {\n selector: to.hash,\n offset: {x: 0, y: -100}\n };\n }\n },\n routes: [\n {\n path: '/',\n name: 'welcome',\n components: {\n default: () => import(/* webpackChunkName: \"welcome\" */ './views/Welcome.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n },\n alias: '/cass-editor/'\n },\n {\n path: '/frameworks',\n name: 'frameworks',\n components: {\n default: () => import(/* webpackChunkName: \"frameworks\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/collections',\n name: 'collections',\n components: {\n default: () => import(/* webpackChunkName: \"frameworks\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/concepts',\n name: 'concepts',\n components: {\n default: () => import(/* webpackChunkName: \"concepts\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/progressionLevels',\n name: 'progressionLevels',\n components: {\n default: () => import(/* webpackChunkName: \"progressionLevels\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/login',\n name: 'login',\n component: () => import(/* webpackChunkName: \"login\" */ './views/login/Login.vue')\n },\n {\n path: '/legacyLogin',\n name: 'legacyLogin',\n component: () => import(/* webpackChunkName: \"login\" */ './views/login/LegacyLogin.vue')\n },\n {\n path: '/createAccount',\n name: 'createAccount',\n component: () => import(/* webpackChunkName: \"login\" */ './views/login/CreateAccount.vue')\n },\n {\n path: '/configuration',\n name: 'configuration',\n components: {\n default: () => import(/* webpackChunkName: \"configurationEditor\" */ './views/ConfigurationEditor'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/users',\n name: 'users',\n components: {\n default: () => import(/* webpackChunkName: \"userGroupEditor\" */ './views/usersGroups/UserGroupEditor'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n // {\n // path: '/users-and-groups',\n // name: 'users-and-groups',\n // components: {\n // default: () => import('./views/usersGroups/UsersAndGroups.vue'),\n // sidebar: () => import('./components/SideNav.vue'),\n // topbar: () => import('./components/Topbar.vue')\n // }\n // },\n {\n path: '/pluginManager',\n name: 'pluginManager',\n components: {\n default: () => import(/* webpackChunkName: \"pluginManager\" */ './views/plugins/PluginManager'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/crosswalk',\n name: 'crosswalk',\n components: {\n default: () => import(/* webpackChunkName: \"crosswalk\" */ './views/framework/Crosswalk'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/timeline',\n name: 'timeline',\n components: {\n default: () => import(/* webpackChunkName: \"timeline\" */ './views/framework/Timeline'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/about',\n name: 'about',\n components: {\n default: () => import(/* webpackChunkName: \"about\" */ './views/About.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/framework',\n name: 'framework',\n components: {\n default: () => import(/* webpackChunkName: \"framework\" */ './views/framework/Framework.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/import',\n name: 'import',\n components: {\n default: () => import(/* webpackChunkName: \"import\" */ './views/framework/Import.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/organizations',\n name: 'organizations',\n components: {\n default: () => import(/* webpackChunkName: \"organizations\" */ './views/organization/Organizations.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/organization',\n name: 'organization',\n components: {\n default: () => import(/* webpackChunkName: \"organization\" */ './views/organization/Organization.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/pluginContainer',\n name: 'pluginContainer',\n components: {\n default: () => import(/* webpackChunkName: \"pluginContainer\" */ './views/plugins/PluginContainer.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/conceptScheme',\n name: 'conceptScheme',\n components: {\n default: () => import(/* webpackChunkName: \"conceptScheme\" */ './views/conceptScheme/ConceptScheme.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/progressionModel',\n name: 'progressionModel',\n components: {\n default: () => import(/* webpackChunkName: \"progressionModel\" */ './views/progressionModel/ProgressionModel.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/403',\n name: 'Forbidden',\n component: () => import(/* webpackChunkName: \"forbidden\" */ './views/Forbidden.vue')\n },\n {\n path: '/500',\n name: 'InternalError',\n component: () => import(/* webpackChunkName: \"internalError\" */ './views/InternalError.vue')\n },\n {\n path: '/directory',\n name: 'directory',\n components: {\n default: () => import(/* webpackChunkName: \"directory\" */ './views/directory/Directory.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n }\n ]\n});\n","import Vue from 'vue';\nimport Vuex from 'vuex';\n\nVue.use(Vuex);\n\nconst state = {\n framework: null,\n organization: null,\n selectedCompetency: null,\n queryParams: {},\n defaultLanguage: null,\n webSocketBackoff: 100,\n selectCompetencyRelation: null,\n selectingCompetencies: false,\n private: false,\n newCompetency: null,\n newFramework: null,\n t3Profile: false,\n changedObject: null,\n configuration: null,\n commonPathIframe: '',\n iframeCompetencyPathInterframework: '',\n iframeConceptPath: '',\n addCommentAboutId: '',\n addCommentType: '',\n commentToEdit: {},\n commentToReply: {},\n frameworkCommentDataLoaded: false,\n frameworkCommentList: [],\n frameworkCommentPersonMap: {},\n commentsToDelete: [],\n commentScrollTo: {},\n editsToUndo: [],\n lastEditToUndo: null,\n recomputeHierarchy: false,\n recomputePrecedence: false,\n recomputePrecedenceAfterReorder: false,\n selectedCompetenciesAsProperties: null,\n refreshLevels: false,\n refreshAlignments: false,\n refreshProperties: false,\n conceptMode: false,\n collectionMode: false,\n progressionMode: false,\n cutId: null,\n copyId: null,\n paste: false,\n cutOrCopyContainerId: null,\n nodeInFocus: null,\n relations: {},\n setPropertyLevel: null,\n addAnother: false,\n itemToDelete: {},\n itemToRemove: {},\n itemToExport: {},\n manageAssertions: false,\n assertions: [],\n badgePk: null,\n me: null,\n subject: null,\n people: [],\n firstSearchProcessing: true,\n searchingAssertions: false\n};\nconst mutations = {\n framework(state, f) {\n state.framework = f;\n },\n organization(state, f) {\n state.organization = f;\n },\n selectedCompetency(state, comp) {\n state.selectedCompetency = comp;\n },\n queryParams(state, params) {\n state.queryParams = params;\n },\n defaultLanguage(state, lang) {\n state.defaultLanguage = lang;\n },\n webSocketBackoffIncrease(state) {\n state.webSocketBackoff *= 2;\n },\n private(state, bool) {\n state.private = bool;\n },\n selectCompetencyRelation(state, r) {\n state.selectCompetencyRelation = r;\n },\n selectingCompetencies(state, bool) {\n state.selectingCompetencies = bool;\n },\n newCompetency(state, id) {\n state.newCompetency = id;\n },\n newFramework(state, id) {\n state.newFramework = id;\n },\n t3Profile(state, bool) {\n state.t3Profile = bool;\n },\n changedObject(state, id) {\n state.changedObject = id;\n },\n configuration(state, config) {\n state.configuration = config;\n },\n commonPathIframe(state, val) {\n state.commonPathIframe = val;\n },\n iframeCompetencyPathInterframework(state, val) {\n state.iframeCompetencyPathInterframework = val;\n },\n iframeConceptPath(state, val) {\n state.iframeConceptPath = val;\n },\n setAddCommentAboutId(state, val) {\n state.addCommentAboutId = val;\n },\n setAddCommentType(state, val) {\n state.addCommentType = val;\n },\n setCommentToEdit(state, val) {\n state.commentToEdit = val;\n },\n setCommentToReply(state, val) {\n state.commentToReply = val;\n },\n setCommentsToDelete(state, val) {\n state.commentsToDelete = val;\n },\n clearFrameworkCommentData(state) {\n state.frameworkCommentDataLoaded = false;\n state.frameworkCommentList = [];\n state.frameworkCommentPersonMap = {};\n },\n setFrameworkCommentDataLoaded(state, val) {\n state.frameworkCommentDataLoaded = val;\n },\n setFrameworkCommentList(state, val) {\n state.frameworkCommentList = val;\n },\n setFrameworkCommentPersonMap(state, val) {\n state.frameworkCommentPersonMap = val;\n },\n setCommentScrollTo(state, val) {\n state.commentScrollTo = val;\n },\n addEditsToUndo(state, edits) {\n state.editsToUndo.push(edits);\n },\n setLastEditToUndo(state, edit) {\n state.lastEditToUndo = edit;\n },\n recomputeHierarchy(state, boolean) {\n state.recomputeHierarchy = boolean;\n },\n recomputePrecedence(state, boolean) {\n state.recomputePrecedence = boolean;\n },\n recomputePrecedenceAfterReorder(state, boolean) {\n state.recomputePrecedenceAfterReorder = boolean;\n },\n selectedCompetenciesAsProperties(state, comps) {\n state.selectedCompetenciesAsProperties = comps;\n },\n refreshLevels(state, boolean) {\n state.refreshLevels = boolean;\n },\n refreshAlignments(state, boolean) {\n state.refreshAlignments = boolean;\n },\n refreshProperties(state, boolean) {\n state.refreshProperties = boolean;\n },\n conceptMode(state, boolean) {\n if (boolean) {\n state.conceptMode = true;\n state.progressionMode = false;\n } else {\n state.conceptMode = false;\n }\n },\n collectionMode(state, boolean) {\n state.collectionMode = boolean;\n },\n progressionMode(state, boolean) {\n if (boolean) {\n state.progressionMode = true;\n state.conceptMode = false;\n } else {\n state.progressionMode = false;\n }\n },\n cutId(state, id) {\n state.cutId = id;\n },\n copyId(state, id) {\n state.copyId = id;\n },\n paste(state, id) {\n state.paste = id;\n },\n cutOrCopyContainerId(state, id) {\n state.cutOrCopyContainerId = id;\n },\n nodeInFocus(state, id) {\n state.nodeInFocus = id;\n },\n relations(state, obj) {\n state.relations = obj;\n },\n setPropertyLevel(state, level) {\n state.setPropertyLevel = level;\n },\n addAnother(state, bool) {\n state.addAnother = bool;\n },\n setItemToDelete(state, val) {\n state.itemToDelete = val;\n },\n setItemToRemove(state, val) {\n state.itemToRemove = val;\n },\n setItemToExport(state, val) {\n state.itemToExport = val;\n },\n setManageAssertions(state, val) {\n state.manageAssertions = val;\n },\n setAssertions(state, val) {\n state.assertions = val;\n },\n removeAssertion(state, val) {\n EcArray.setRemove(state.assertions, val);\n },\n removeAssertionAtIndex(state, val) {\n state.assertions.splice(val, 1);\n },\n addAssertion(state, val) {\n EcArray.setAdd(state.assertions, val);\n },\n setBadgePk(state, val) {\n state.badgePk = val;\n },\n setMe(state, val) {\n state.me = val;\n },\n setSubject(state, val) {\n state.subject = val;\n },\n setPeople(state, val) {\n state.people = val;\n },\n setFirstSearchProcessing(state, val) {\n state.firstSearchProcessing = val;\n },\n setSearchingAssertions(state, val) {\n state.searchingAssertions = val;\n }\n};\nconst actions = {\n getDirectoryChildren: function(instance, directory) {\n let children = [];\n if (directory.frameworks) {\n children.push(...directory.frameworks);\n }\n if (directory.resources) {\n children.push(...directory.resources);\n }\n if (directory.directories) {\n children.push(...directory.directories);\n }\n return children;\n },\n lastEditToUndo: function(context) {\n context.commit('setLastEditToUndo', context.state.editsToUndo.pop());\n return context.state.lastEditToUndo;\n },\n getThing: (instance, payload) => {\n return new Promise((resolve, reject) => {\n var url = EcRemote.urlAppend(payload.server, payload.service);\n url = EcRemote.upgradeHttpToHttps(url);\n fetch(url, {\n headers: payload.headers\n }).then((resp) => {\n if (payload.success) {\n payload.success(resp.data);\n }\n resolve(resp.data);\n }).catch((err) => {\n if (payload.failure) {\n payload.failure(err);\n }\n reject(err);\n });\n });\n },\n searchForAssertions: (instance) => {\n return new Promise((resolve, reject) => {\n instance.state.searchingAssertions = true;\n var assertions = [];\n let doSearch = async function(start, count) {\n return new Promise((resolve, reject) => {\n EcAssertion.search(window.repo, \"\\\"\" + instance.state.me + \"\\\"\", async(results) => {\n assertions.push(...results);\n start += count;\n if (results.length > 0) {\n await doSearch(start, count);\n }\n resolve();\n }, reject, {size: count, start: start});\n });\n };\n\n doSearch(0, 5000).then(() => {\n var eah = new EcAsyncHelper();\n eah.each(assertions, (assertion, callback) => {\n if (assertion.assertionDateDecrypted != null) {\n callback();\n } else {\n assertion.getAssertionDateAsync((date) => {\n assertion.assertionDateDecrypted = date;\n callback();\n }, callback);\n }\n },\n (assertions) => {\n instance.state.assertions = assertions;\n instance.state.searchingAssertions = false;\n resolve();\n });\n }).catch(appError);\n });\n },\n computeBecause: (instance, evidences) => {\n return new Promise((resolve, reject) => {\n var explanations = [];\n new EcAsyncHelper().each(evidences, (e, callback) => {\n var evidenceString = \"\";\n var eoriginal = e;\n if (e.startsWith != null && e.startsWith(\"{\")) {\n e = JSON.parse(e);\n }\n if (EcObject.isObject(e)) {\n if (e.verb != null) {\n if (e.verb.display != null) {\n if (e.verb.display.en != null) {\n evidenceString += e.verb.display.en + \" \";\n }\n }\n }\n if (e.object != null) {\n if (e.object.definition != null) {\n if (e.object.definition.type === \"http://adlnet.gov/expapi/activities/assessment\") {\n evidenceString += \"\\\"\" + e.object.definition.name.en + \"\\\" quiz with a \";\n if (e.result != null) {\n if (e.result.success != null) {\n evidenceString += e.result.success ? \" passing \" : \" not passing \";\n evidenceString += Math.round(e.result.score.scaled * 100.0) + \"%\";\n }\n }\n }\n }\n }\n if (e.object != null) {\n if (e.object.definition != null) {\n if (e.object.definition.interactionType != null) {\n evidenceString += \"\\\"\" + e.object.definition.name.en + \"\\\" \";\n if (e.result != null) {\n if (e.result.success != null) {\n evidenceString += e.result.success ? \" correctly\" : \" incorrectly\";\n }\n }\n }\n }\n }\n if (evidenceString !== \"\") {\n explanations.push({text: evidenceString, original: eoriginal});\n }\n callback();\n } else if (e.startsWith != null && e.startsWith(\"http\")) {\n let failureFunc = function() {\n explanations.push({\n text: \"did this\",\n url: e,\n original: eoriginal\n });\n };\n EcRepository.get(e, (success) => {\n try {\n if (success.isAny(new ChooseAction().getTypes())) {\n EcRepository.get(success.object, (creativeWork) => {\n explanations.push({\n text: \"viewed \" + creativeWork.name,\n url: creativeWork.url,\n original: eoriginal\n });\n callback();\n }, callback);\n } else {\n failureFunc();\n callback();\n }\n } catch (e) {\n failureFunc();\n callback();\n }\n }, (failure) => {\n failureFunc();\n callback();\n });\n } else {\n explanations.push({text: \"\\\"\" + e + \"\\\"\", original: eoriginal});\n callback();\n }\n }, (evidences) => {\n resolve(explanations);\n });\n });\n }\n};\nconst getters = {\n framework: function(state) {\n return state.framework;\n },\n organization: function(state) {\n return state.organization;\n },\n selectedCompetency: function(state) {\n return state.selectedCompetency;\n },\n queryParams: function(state) {\n return state.queryParams;\n },\n defaultLanguage: function(state) {\n return state.defaultLanguage;\n },\n webSocketBackoff: function(state) {\n return state.webSocketBackoff;\n },\n selectCompetencyRelation: function(state) {\n return state.selectCompetencyRelation;\n },\n selectingCompetencies: function(state) {\n return state.selectingCompetencies;\n },\n private: function(state) {\n return state.private;\n },\n newCompetency: function(state) {\n return state.newCompetency;\n },\n newFramework: function(state) {\n return state.newFramework;\n },\n t3Profile: function(state) {\n return state.t3Profile;\n },\n changedObject: function(state) {\n return state.changedObject;\n },\n configuration: function(state) {\n return state.configuration;\n },\n addCommentAboutId: function(state) {\n return state.addCommentAboutId;\n },\n addCommentType: function(state) {\n return state.addCommentType;\n },\n commentToEdit: function(state) {\n return state.commentToEdit;\n },\n commentToReply: function(state) {\n return state.commentToReply;\n },\n commentsToDelete: function(state) {\n return state.commentsToDelete;\n },\n frameworkCommentDataLoaded: function(state) {\n return state.frameworkCommentDataLoaded;\n },\n frameworkCommentList: function(state) {\n return state.frameworkCommentList;\n },\n frameworkCommentPersonMap: function(state) {\n return state.frameworkCommentPersonMap;\n },\n commentScrollTo: function(state) {\n return state.commentScrollTo;\n },\n recomputeHierarchy: function(state) {\n return state.recomputeHierarchy;\n },\n recomputePrecedence: function(state) {\n return state.recomputePrecedence;\n },\n recomputePrecedenceAfterReorder: function(state) {\n return state.recomputePrecedenceAfterReorder;\n },\n selectedCompetenciesAsProperties: function(state) {\n return state.selectedCompetenciesAsProperties;\n },\n refreshLevels: function(state) {\n return state.refreshLevels;\n },\n refreshAlignments: function(state) {\n return state.refreshAlignments;\n },\n refreshProperties: function(state) {\n return state.refreshProperties;\n },\n conceptMode: function(state) {\n return state.conceptMode;\n },\n collectionMode: function(state) {\n return state.collectionMode;\n },\n progressionMode: function(state) {\n return state.progressionMode;\n },\n cutId: function(state) {\n return state.cutId;\n },\n copyId: function(state) {\n return state.copyId;\n },\n paste: function(state) {\n return state.paste;\n },\n cutOrCopyContainerId: function(state) {\n return state.cutOrCopyContainerId;\n },\n nodeInFocus: function(state) {\n return state.nodeInFocus;\n },\n relations: function(state) {\n return state.relations;\n },\n setPropertyLevel: function(state) {\n return state.setPropertyLevel;\n },\n addAnother: function(state) {\n return state.addAnother;\n },\n itemToDelete: function(state) {\n return state.itemToDelete;\n },\n itemToRemove: function(state) {\n return state.itemToRemove;\n },\n itemToExport: function(state) {\n return state.itemToExport;\n },\n manageAssertions: function(state) {\n return state.manageAssertions;\n },\n assertions: function(state) {\n return state.assertions.sort((a, b) => {\n return b.assertionDateDecrypted - a.assertionDateDecrypted;\n });\n },\n badgePk: function(state) {\n return state.badgePk;\n },\n getMe: function(state) {\n return state.me;\n },\n getSubject: function(state) {\n return state.subject;\n },\n people: function(state) {\n return state.people;\n },\n firstSearchProcessing: function(state) {\n return state.firstSearchProcessing;\n },\n searchingAssertions: function(state) {\n return state.searchingAssertions;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","// This store is used to control app state for behavior\n// such as displaying certain modals\n// and transitions\n\nconst state = {\n sideNavEnabled: true,\n showSideNav: true,\n showRightAside: false,\n rightAsideContent: '',\n rightAsideObject: null,\n canViewComments: false,\n canAddComments: false,\n pluginLastUpdate: null,\n pluginToLaunch: null,\n pluginToLaunchLastUpdate: 0,\n framework: {\n showToolBar: true,\n commentsEnabled: true,\n versionsEnabled: true,\n draggingEnabled: false,\n isDragging: false,\n draggable: {}\n },\n configuration: {\n contentSection: ''\n },\n frameworks: {\n searchTerm: '',\n quickFilters: [],\n applySearchTo: [],\n sortResults: [],\n refreshSearch: false,\n searchFrameworksInCompetencySearch: false\n },\n modal: {\n framework: '',\n showModal: false,\n dynamicModalContent: {},\n objForShareModal: null\n },\n directories: {\n directoryList: [],\n selectedDirectory: null,\n searchingInDirectory: true,\n editDirectory: false\n },\n import: {\n files: [],\n transition: 'upload', // upload, process, detail, preview, light\n status: '', // success, failure, edit\n type: 'file', // pdf, server, text\n fileType: '',\n firstImport: Boolean,\n errors: [], // erorrs from the code or from the api\n feedback: '', // additional information\n duplicates: [],\n skip: [],\n framework: null,\n serverUrl: '',\n url: '',\n frameworkName: '',\n frameworkDescription: '',\n importCsv: {\n nameColumn: {},\n descriptionColumn: {},\n scopeColumn: {},\n idColumn: {},\n sourceColumn: {},\n relationColumn: {},\n targetColumn: {}\n },\n importText: '',\n csvColumns: [],\n csvRelationColumns: [],\n csvRelationFile: null,\n importModalParams: null\n },\n allowCancel: false,\n banner: {\n message: '',\n color: '',\n background: ''\n },\n motd: {\n message: '',\n title: ''\n },\n curatedPlugins: [\n {\n \"id\": \"vlrcTestPlugin3\",\n \"url\": \"https://raw.githubusercontent.com/cassproject/cass-vlrc/master/\"\n }\n ]\n};\nconst mutations = {\n showSideNav: function() {\n state.showSideNav = true;\n state.showRightAside = false;\n },\n closeSideNav: function() {\n state.showSideNav = false;\n },\n showRightAside: function(state, payload) {\n state.showRightAside = true;\n state.rightAsideContent = payload;\n // state.showSideNav = false;\n },\n closeRightAside: function(state) {\n state.showRightAside = false;\n state.rightAsideContent = '';\n state.rightAsideObject = null;\n },\n rightAsideObject: async function(state, payload) {\n if (payload.encryptedType) {\n let type = \"Ec\" + payload.encryptedType;\n let obj = new window[type]();\n obj.copyFrom(await EcEncryptedValue.fromEncryptedValue(payload));\n state.rightAsideObject = obj;\n } else {\n state.rightAsideObject = payload;\n }\n },\n showModal: function(state, payload) {\n state.modal.showModal = true;\n state.modal.dynamicModalContent = payload;\n },\n closeModal: function(state) {\n state.modal.showModal = false;\n state.modal.dynamicModalContent = {};\n },\n objForShareModal: function(state, payload) {\n state.modal.objForShareModal = payload;\n },\n draggingEnabled: function(state, value) {\n state.framework.draggingEnabled = value;\n },\n isDragging: function(state, value) {\n state.framework.isDragging = value;\n },\n draggable: function(state, value) {\n state.framework.draggable = value;\n },\n importFiles: function(state, value) {\n state.import.files = value;\n },\n setCanViewComments: function(state, value) {\n state.canViewComments = value;\n },\n setCanAddComments: function(state, value) {\n state.canAddComments = value;\n },\n clearImportFiles: function(state) {\n state.import.files = [];\n },\n pluginLastUpdate: function(state, value) {\n state.pluginLastUpdate = value;\n },\n pluginToLaunch: function(state, value) {\n state.pluginToLaunch = value;\n },\n pluginToLaunchLastUpdate: function(state, value) {\n state.pluginToLaunchLastUpdate = value;\n },\n resetImport: function(state) {\n state.import = {\n files: [],\n transition: 'upload', // upload, process, detail, preview, light\n status: '', // success, failure, edit\n type: 'file', // pdf, server, text\n fileType: '',\n firstImport: Boolean,\n errors: [], // erorrs from the code or from the api\n feedback: '', // additional information\n duplicates: [],\n skip: [],\n framework: null,\n serverUrl: '',\n url: '',\n frameworkName: '',\n frameworkDescription: '',\n importCsv: {\n nameColumn: {},\n descriptionCcolumn: {},\n scopeColumn: {},\n idColumn: {},\n sourceColumn: {},\n relationColumn: {},\n targetColumn: {}\n },\n importText: '',\n csvColumns: [],\n csvRelationColumns: [],\n csvRelationFile: null,\n importModalParams: null\n };\n },\n importTransition: function(state, value) {\n state.import.transition = value;\n },\n importFileType: function(state, value) {\n state.import.fileType = value;\n },\n importType: function(state, value) {\n state.import.type = value;\n },\n firstImport: function(state, val) {\n state.import.firstImport = val;\n },\n addImportError: function(state, val) {\n state.import.errors.push(val);\n },\n clearImportErrors: function(state) {\n state.import.errors = [];\n },\n importStatus: function(state, val) {\n state.import.status = val;\n },\n importAllowCancel: function(state, val) {\n state.allowCancel = val;\n },\n importFeedback: function(state, val) {\n state.import.feedback = val;\n },\n importDuplicates: function(state, val) {\n state.import.duplicates = val;\n },\n importSkip: function(state, val) {\n state.import.skip = val;\n },\n importFramework: function(state, val) {\n state.import.framework = val;\n },\n importFrameworkName: function(state, val) {\n state.import.frameworkName = val;\n },\n importFrameworkNameColumn: function(state, val) {\n state.import.frameworkNameColumn = val;\n },\n importFrameworkScopeColumn: function(state, val) {\n state.import.frameworkScopeColumn = val;\n },\n importFrameworkIdColumn: function(state, val) {\n state.import.frameworkIdColumn = val;\n },\n importFrameworkDescription: function(state, val) {\n state.import.frameworkDescription = val;\n },\n importText: function(state, val) {\n state.import.importText = val;\n },\n importServerUrl: function(state, val) {\n state.import.serverUrl = val;\n },\n importUrl: function(state, val) {\n state.import.url = val;\n },\n importNameColumn: function(state, val) {\n state.import.importCsv.nameColumn = val;\n },\n importDescriptionColumn: function(state, val) {\n state.import.importCsv.descriptionColumn = val;\n },\n importScopeColumn: function(state, val) {\n state.import.importCsv.scopeColumn = val;\n },\n importSourceColumn: function(state, val) {\n state.import.importCsv.sourceColumn = val;\n },\n importTargetColumn: function(state, val) {\n state.import.importCsv.targetColumn = val;\n },\n importRelationColumn: function(state, val) {\n state.import.importCsv.relationColumn = val;\n },\n importIdColumn: function(state, val) {\n state.import.importCsv.idColumn = val;\n },\n csvColumns: function(state, val) {\n state.import.csvColumns = val;\n },\n csvRelationColumns: function(state, val) {\n state.import.csvRelationColumns = val;\n },\n csvRelationFile: function(state, val) {\n state.import.csvRelationFile = val;\n },\n importModalParams: function(state, val) {\n state.import.importModalParams = val;\n },\n searchTerm: function(state, value) {\n state.frameworks.searchTerm = value;\n },\n applySearchTo: function(state, value) {\n state.frameworks.applySearchTo = value;\n },\n refreshSearch: function(state, value) {\n state.frameworks.refreshSearch = value;\n },\n sortResults: function(state, value) {\n state.frameworks.sortResults = value;\n },\n quickFilters: function(state, value) {\n state.frameworks.quickFilters = value;\n },\n singleQuickFilter: function(state, value) {\n let i = state.frameworks.quickFilters.findIndex((filter) => filter.id === value.id);\n if (i >= 0) {\n state.frameworks.quickFilters[i].checked = value.checked;\n } else {\n state.frameworks.quickFilters.push(value);\n }\n },\n clearSearchFilters: function(state) {\n let quickFilters = state.frameworks.quickFilters;\n let sortResults = state.frameworks.sortResults;\n let applySearchTo = state.frameworks.applySearchTo;\n\n for (let i = 0; i < quickFilters.length; i++) {\n quickFilters[i].checked = false;\n }\n for (let i = 0; i < sortResults.length; i++) {\n sortResults[i].checked = false;\n }\n for (let i = 0; i < applySearchTo.length; i++) {\n applySearchTo[i].checked = false;\n }\n state.frameworks.quickFilters = quickFilters;\n state.frameworks.sortResults = sortResults;\n state.frameworks.applySearchTo = applySearchTo;\n },\n selectDirectory: function(state, value) {\n state.directories.selectedDirectory = value;\n },\n directoryList: function(state, list) {\n state.directories.directoryList = list;\n },\n searchingInDirectory: function(state, bool) {\n state.directories.searchingInDirectory = bool;\n },\n editDirectory: function(state, bool) {\n state.directories.editDirectory = bool;\n },\n searchFrameworksInCompetencySearch: function(state, bool) {\n state.frameworks.searchFrameworksInCompetencySearch = bool;\n },\n setBanner: function(state, payload) {\n if (payload.message) {\n state.banner.message = payload.message;\n }\n if (payload.color) {\n state.banner.color = payload.color;\n }\n if (payload.background) {\n state.banner.background = payload.background;\n }\n },\n setMotd: function(state, payload) {\n if (payload.message) {\n state.motd.message = payload.message;\n }\n if (payload.title) {\n state.motd.title = payload.title;\n }\n },\n setCuratedPlugins: function(state, payload) {\n state.curatedPlugins = payload;\n }\n};\nconst actions = {\n clearImport: function({commit}) {\n commit('importFramework', null);\n commit('clearImportFiles');\n commit('clearImportErrors');\n commit('importTransition', 'upload');\n commit('importStatus', '');\n commit('importAllowCancel', false);\n commit('importFeedback', '');\n commit('importFileType', '');\n commit('importDuplicates', []);\n commit('importSkip', []);\n },\n refreshDirectories: function({commit}) {\n let directories = [];\n let directoryIds = [];\n let paramObj = {size: 10000};\n EcDirectory.search(window.repo, \"\", function(dirs) {\n for (let i = 0; i < dirs.length; i++) {\n if (dirs[i].canEditAny(EcIdentityManager.default.getMyPks()) && !EcArray.has(directoryIds, dirs[i].id)) {\n directories.push(dirs[i]);\n directoryIds.push(dirs[i].id);\n }\n }\n commit('directoryList', directories);\n }, appError, paramObj);\n }\n};\nconst getters = {\n canViewComments: state => {\n return state.canViewComments;\n },\n canAddComments: state => {\n return state.canAddComments;\n },\n sideNavEnabled: state => {\n return state.sideNavEnabled;\n },\n showSideNav: state => {\n return state.showSideNav;\n },\n showRightAside: state => {\n return state.showRightAside;\n },\n rightAsideContent: state => {\n return state.rightAsideContent;\n },\n rightAsideObject: state => {\n return state.rightAsideObject;\n },\n framework: state => {\n return state.framework;\n },\n showModal: state => {\n return state.modal.showModal;\n },\n dynamicModalContent: state => {\n return state.modal.dynamicModalContent;\n },\n objForShareModal: state => {\n return state.modal.objForShareModal;\n },\n draggingEnabled: state => {\n return state.modal.draggingEnabled;\n },\n isDragging: state => {\n return state.modal.isDragging;\n },\n draggable: state => {\n return state.framework.draggable;\n },\n importFiles: state => {\n return state.import.files;\n },\n importTransition: state => {\n return state.import.transition;\n },\n importFileType: state => {\n return state.import.fileType;\n },\n importType: state => {\n return state.import.type;\n },\n firstImport: state => {\n return state.import.firstImport;\n },\n importErrors: state => {\n return state.import.errors;\n },\n importStatus: state => {\n return state.import.status;\n },\n importAllowCancel: state => {\n return state.allowCancel;\n },\n importFeedback: state => {\n return state.import.feedback;\n },\n importDuplicates: state => {\n return state.import.duplicates;\n },\n importSkip: state => {\n return state.import.skip;\n },\n importFramework: state => {\n return state.import.framework;\n },\n importFrameworkName: state => {\n return state.import.frameworkName;\n },\n importFrameworkNameColumn: state => {\n return state.import.frameworkNameColumn;\n },\n importFrameworkScopeColumn: state => {\n return state.import.frameworkScopeColumn;\n },\n importFrameworkIdColumn: state => {\n return state.import.frameworkIdColumn;\n },\n importFrameworkDescription: state => {\n return state.import.frameworkDescription;\n },\n importText: state => {\n return state.import.importText;\n },\n importServerUrl: state => {\n return state.import.serverUrl;\n },\n importUrl: state => {\n return state.import.url;\n },\n importNameColumn: state => {\n return state.import.importCsv.nameColumn;\n },\n importDescriptionColumn: state => {\n return state.import.importCsv.descriptionColumn;\n },\n importScopeColumn: state => {\n return state.import.importCsv.scopeColumn;\n },\n importIdColumn: state => {\n return state.import.importCsv.idColumn;\n },\n importSourceColumn: state => {\n return state.import.importCsv.sourceColumn;\n },\n importRelationColumn: state => {\n return state.import.importCsv.relationColumn;\n },\n importTargetColumn: state => {\n return state.import.importCsv.targetColumn;\n },\n importModalParams: state => {\n return state.import.importModalParams;\n },\n searchTerm: state => {\n return state.frameworks.searchTerm;\n },\n sortResults: state => {\n return state.frameworks.sortResults;\n },\n quickFilters: state => {\n return state.frameworks.quickFilters;\n },\n filterByOwnedByMe: (state) => {\n let filter = state.frameworks.quickFilters.find((filter) => filter.id === \"ownedByMe\");\n if (!filter) {\n return false;\n }\n if (Array.isArray(filter) && filter.length > 0) {\n return filter[0].checked;\n } else {\n return filter.checked;\n }\n },\n filterByNotOwnedByMe: (state) => {\n let filter = state.frameworks.quickFilters.find((filter) => filter.id === \"notOwnedByMe\");\n if (!filter) {\n return false;\n }\n if (Array.isArray(filter) && filter.length > 0) {\n return filter[0].checked;\n } else {\n return filter.checked;\n }\n },\n filterByConfigMatchDefault: (state) => {\n let filter = state.frameworks.quickFilters.find((filter) => filter.id === \"configMatchDefault\");\n if (!filter) {\n return false;\n }\n if (Array.isArray(filter) && filter.length > 0) {\n return filter[0].checked;\n } else {\n return filter.checked;\n }\n },\n applySearchTo: state => {\n return state.frameworks.applySearchTo;\n },\n refreshSearch: state => {\n return state.frameworks.refreshSearch;\n },\n csvColumns: state => {\n return state.import.csvColumns;\n },\n csvRelationColumns: state => {\n return state.import.csvRelationColumns;\n },\n csvRelationFile: state => {\n return state.import.csvRelationFile;\n },\n pluginLastUpdate: state => {\n return state.pluginLastUpdate;\n },\n pluginToLaunch: state => {\n return state.pluginToLaunch;\n },\n pluginToLaunchLastUpdate: state => {\n return state.pluginToLaunchLastUpdate;\n },\n selectedDirectory: state => {\n return state.directories.selectedDirectory;\n },\n directoryList: state => {\n return state.directories.directoryList;\n },\n searchingInDirectory: state => {\n return state.directories.searchingInDirectory;\n },\n editDirectory: state => {\n return state.directories.editDirectory;\n },\n searchFrameworksInCompetencySearch: state => {\n return state.frameworks.searchFrameworksInCompetencySearch;\n },\n bannerMessage: state => {\n return state.banner.message;\n },\n bannerColor: state => {\n return state.banner.color;\n },\n bannerBackground: state => {\n return state.banner.background;\n },\n motdTitle: state => {\n return state.motd.title;\n },\n motdMessage: state => {\n return state.motd.message;\n },\n curatedPlugins: state => {\n return state.curatedPlugins;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n loggedOnPerson: {},\n repoInit: {\n ssoLogin: null,\n ssoLogout: null,\n ssoPublicKey: null\n },\n lastLogin: null\n};\nconst mutations = {\n loggedOnPerson(state, personObj) {\n state.loggedOnPerson = personObj;\n if (window.EcIdentityManager.default.ids.length > 0) {\n state.lastLogin = window.EcIdentityManager.default.ids[0].lastLogin;\n } else {\n state.lastLogin = null;\n }\n },\n repositorySsoOptions(state, repoInit) {\n state.repoInit.ssoLogin = repoInit.ssoLogin;\n state.repoInit.ssoLogout = repoInit.ssoLogout;\n state.repoInit.ssoPublicKey = repoInit.ssoPublicKey;\n }\n};\nconst actions = {\n\n};\nconst getters = {\n loggedOnPerson: function(state) {\n return state.loggedOnPerson;\n },\n repositorySsoOptions: function(state) {\n return state.repoInit;\n },\n lastLogin: function(state) {\n return state.lastLogin;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n step: 0,\n frameworkSource: null,\n frameworkSourceRelationships: null,\n frameworkTarget: null,\n frameworkTargetRelationships: null,\n relevantExistingAlignmentsMap: null,\n relevantExistingAlignmentsMapLastUpdate: null,\n alignedCompetenciesList: [],\n workingAlignmentsMap: {\n source: '',\n targets: [],\n initialTargets: [],\n removedTargets: [],\n changed: false,\n type: ''\n },\n alignmentsToSave: [],\n alignmentsToDelete: [],\n sourceState: 'ready',\n targetState: 'ready',\n targetNodesToHighlight: [],\n enabledRelationshipTypes: [],\n enabledRelationshipTypesLastUpdate: null\n};\n\nconst mutations = {\n enabledRelationshipTypesLastUpdate(state, f) {\n state.enabledRelationshipTypesLastUpdate = f;\n },\n enabledRelationshipTypes(state, f) {\n state.enabledRelationshipTypes = f;\n },\n targetNodesToHighlight(state, f) {\n state.targetNodesToHighlight = f;\n },\n frameworkSource(state, f) {\n state.frameworkSource = f;\n },\n frameworkTarget(state, f) {\n state.frameworkTarget = f;\n },\n frameworkSourceRelationships(state, f) {\n state.frameworkSourceRelationships = f;\n },\n frameworkTargetRelationships(state, f) {\n state.frameworkTargetRelationships = f;\n },\n relevantExistingAlignmentsMap(state, f) {\n state.relevantExistingAlignmentsMap = f;\n },\n relevantExistingAlignmentsMapLastUpdate(state, f) {\n state.relevantExistingAlignmentsMapLastUpdate = f;\n },\n alignedCompetenciesList(state, f) {\n state.alignedCompetenciesList = f;\n },\n step(state, val) {\n state.step = val;\n },\n workingAlignmentsSource(state, c) {\n state.workingAlignmentsMap.source = c;\n },\n workingAlignmentsTargets(state, c) {\n state.workingAlignmentsMap.targets = c;\n },\n workingAlignmentsType(state, a) {\n state.workingAlignmentsMap.type = a;\n },\n sourceState(state, s) {\n state.sourceState = s;\n },\n targetState(state, t) {\n state.targetState = t;\n },\n alignmentsToSave(state, t) {\n state.alignmentsToSave = t;\n },\n populateAlignedCompetenciesList(state) {\n if (state.relevantExistingAlignmentsMap) {\n let alignedCompetencies = [];\n let sourceComps = Object.keys(state.relevantExistingAlignmentsMap);\n for (let sc of sourceComps) {\n alignedCompetencies.push(sc);\n let alignTypes = Object.keys(state.relevantExistingAlignmentsMap[sc]);\n for (let scAt of alignTypes) {\n let targetIds = Object.keys(state.relevantExistingAlignmentsMap[sc][scAt]);\n for (let ti of targetIds) {\n alignedCompetencies.push(ti);\n }\n }\n }\n state.alignedCompetenciesList = alignedCompetencies;\n }\n },\n populateWorkingAlignmentMap(state) {\n if (state.relevantExistingAlignmentsMap[state.workingAlignmentsMap.source] &&\n state.relevantExistingAlignmentsMap[state.workingAlignmentsMap.source][state.workingAlignmentsMap.type]) {\n let sourceTypeAlignMap = state.relevantExistingAlignmentsMap[state.workingAlignmentsMap.source][state.workingAlignmentsMap.type];\n let targetIds = Object.keys(sourceTypeAlignMap);\n for (let ti of targetIds) {\n state.workingAlignmentsMap.targets.push(ti);\n state.workingAlignmentsMap.initialTargets.push(ti);\n }\n }\n state.workingAlignmentsMap.changed = false;\n },\n resetFrameworkSourceRelationships(state) {\n state.frameworkSourceRelationships = null;\n state.relevantExistingAlignmentsMap = null;\n },\n resetFrameworkTargetRelationships(state) {\n state.frameworkTargetRelationships = null;\n state.relevantExistingAlignmentsMap = null;\n },\n resetCrosswalkFrameworks(state) {\n state.frameworkSource = null;\n state.frameworkTarget = null;\n state.frameworkSourceRelationships = null;\n state.frameworkTargetRelationships = null;\n state.relevantExistingAlignmentsMap = null;\n },\n resetCrosswalkAlignmentsAndState(state) {\n state.workingAlignmentsMap.source = '';\n state.workingAlignmentsMap.targets = [];\n state.workingAlignmentsMap.initialTargets = [];\n state.workingAlignmentsMap.removedTargets = [];\n state.workingAlignmentsMap.changed = false;\n state.workingAlignmentsMap.type = '';\n state.sourceState = 'ready';\n state.targetState = 'ready';\n state.alignmentsToSave = [];\n state.alignmentsToDelete = [];\n },\n resetCrosswalk(state) {\n state.step = 0;\n state.workingAlignmentsMap.source = '';\n state.workingAlignmentsMap.targets = [];\n state.workingAlignmentsMap.initialTargets = [];\n state.workingAlignmentsMap.removedTargets = [];\n state.workingAlignmentsMap.changed = false;\n state.workingAlignmentsMap.type = '';\n state.sourceState = 'ready';\n state.targetState = 'ready';\n state.alignmentsToSave = [];\n state.alignmentsToDelete = [];\n },\n resetWorkingAlignmentsMap(state) {\n state.sourceState = 'ready';\n state.targetState = 'ready';\n state.workingAlignmentsMap = {\n source: '',\n targets: [],\n initialTargets: [],\n removedTargets: [],\n changed: false,\n type: ''\n };\n },\n addWorkingAlignmentsTarget(state, id) {\n let remTargets = state.workingAlignmentsMap.removedTargets;\n let filteredRemovedTargets = remTargets.filter(remTargets => remTargets !== id);\n state.workingAlignmentsMap.removedTargets = filteredRemovedTargets;\n state.workingAlignmentsMap.targets.push(id);\n if (state.workingAlignmentsMap.removedTargets.length > 0) state.workingAlignmentsMap.changed = true;\n else {\n let shouldSetToChanged = false;\n for (let t of state.workingAlignmentsMap.targets) {\n if (!state.workingAlignmentsMap.initialTargets.includes(t)) {\n shouldSetToChanged = true;\n break;\n }\n }\n if (shouldSetToChanged) state.workingAlignmentsMap.changed = true;\n else state.workingAlignmentsMap.changed = false;\n }\n },\n removeWorkingAlignmentsTarget(state, id) {\n let targets = state.workingAlignmentsMap.targets;\n let filtered = targets.filter(target => target !== id);\n state.workingAlignmentsMap.targets = filtered;\n if (state.workingAlignmentsMap.initialTargets.includes(id)) state.workingAlignmentsMap.removedTargets.push(id);\n if (state.workingAlignmentsMap.removedTargets.length > 0) state.workingAlignmentsMap.changed = true;\n else {\n let shouldSetToChanged = false;\n for (let t of state.workingAlignmentsMap.targets) {\n if (!state.workingAlignmentsMap.initialTargets.includes(t)) {\n shouldSetToChanged = true;\n break;\n }\n }\n if (shouldSetToChanged) state.workingAlignmentsMap.changed = true;\n else state.workingAlignmentsMap.changed = false;\n }\n },\n removeAlignmentFromRelevantAlignmentsMap(state, alignProps) {\n if (state.relevantExistingAlignmentsMap[alignProps.source]) {\n if (state.relevantExistingAlignmentsMap[alignProps.source][alignProps.type]) {\n if (state.relevantExistingAlignmentsMap[alignProps.source][alignProps.type][alignProps.target]) {\n let ream = state.relevantExistingAlignmentsMap;\n delete ream[alignProps.source][alignProps.type][alignProps.target];\n state.relevantExistingAlignmentsMap = ream;\n }\n }\n }\n },\n addAlignmentToRelevantAlignmentsMap(state, ecaObj) {\n let ream = state.relevantExistingAlignmentsMap;\n if (!ream[ecaObj.source]) ream[ecaObj.source] = {};\n if (!ream[ecaObj.source][ecaObj.relationType]) ream[ecaObj.source][ecaObj.relationType] = {};\n if (!ream[ecaObj.source][ecaObj.relationType][ecaObj.target]) ream[ecaObj.source][ecaObj.relationType][ecaObj.target] = ecaObj;\n state.relevantExistingAlignmentsMap = ream;\n },\n removeAlignmentFromAlignmentsToSave(state, alignProps) {\n let newAts = [];\n for (let a of state.alignmentsToSave) {\n if (!(a.source === alignProps.source && a.target === alignProps.target && a.relationType === alignProps.type)) {\n newAts.push(a);\n }\n }\n state.alignmentsToSave = newAts;\n },\n removeAlignmentFromAlignmentsToDelete(state, alignProps) {\n let newAtd = [];\n for (let a of state.alignmentsToDelete) {\n if (!(a.source === alignProps.source && a.target === alignProps.target && a.relationType === alignProps.type)) {\n newAtd.push(a);\n }\n }\n state.alignmentsToDelete = newAtd;\n },\n appendAlignmentsToDelete(state, alignment) {\n state.alignmentsToDelete.push(alignment);\n },\n appendAlignmentsToSave(state, alignment) {\n state.alignmentsToSave.push(alignment);\n }\n};\nconst actions = {\n\n};\nconst getters = {\n enabledRelationshipTypesLastUpdate: function(state) {\n return state.enabledRelationshipTypesLastUpdate;\n },\n enabledRelationshipTypes: function(state) {\n return state.enabledRelationshipTypes;\n },\n frameworkSource: function(state) {\n return state.frameworkSource;\n },\n frameworkTarget: function(state) {\n return state.frameworkTarget;\n },\n frameworkSourceRelationships: function(state) {\n return state.frameworkSourceRelationships;\n },\n frameworkTargetRelationships: function(state) {\n return state.frameworkTargetRelationships;\n },\n relevantExistingAlignmentsMap: function(state) {\n return state.relevantExistingAlignmentsMap;\n },\n relevantExistingAlignmentsMapLastUpdate: function(state) {\n return state.relevantExistingAlignmentsMapLastUpdate;\n },\n workingAlignmentsSource(state) {\n return state.workingAlignmentsMap.source;\n },\n workingAlignmentsTargets(state) {\n return state.workingAlignmentsMap.targets;\n },\n workingAlignmentsType(state, a) {\n return state.workingAlignmentsMap.type;\n },\n sourceState(state) {\n return state.sourceState;\n },\n targetState(state) {\n return state.targetState;\n },\n alignmentsToSave(state) {\n return state.alignmentsToSave;\n },\n alignmentsToDelete(state) {\n return state.alignmentsToDelete;\n },\n alignedCompetenciesList(state) {\n return state.alignedCompetenciesList;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n cassApiLocation: ''\n};\n\nconst mutations = {\n cassApiLocation(state, f) {\n state.cassApiLocation = f;\n }\n};\n\nconst actions = {\n};\n\nconst getters = {\n cassApiLocation: function(state) {\n return state.cassApiLocation;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","const state = {\n CONFIG_SEARCH_SIZE: 10000,\n DEFAULT_CONFIGURATION_TYPE: 'Configuration',\n DEFAULT_CONFIGURATION_CONTEXT: 'https://schema.cassproject.org/0.4/',\n LANG_STRING_RANGE: 'http://www.w3.org/2000/01/rdf-schema#langString',\n DEFAULT_HEADING: \"General\",\n LEVEL_SEARCH_SIZE: 10000,\n PERSON_SEARCH_SIZE: 10000,\n DEFAULT_CUSTOM_PROPERTY_CONTEXT: 'https://schema.cassproject.org/0.4/',\n DEFAULT_CUSTOM_PROPERTY_RANGE: 'http://schema.org/Text',\n defaultBrowserConfig: '',\n defaultBrowserConfigName: '',\n localDefaultBrowserConfig: '',\n configBusy: false,\n configList: [],\n configView: 'list',\n currentConfig: {},\n showConfirmDeleteConfigModal: false,\n showMustBeLoggedInModal: false,\n showBrowserConfigSetModal: false,\n configToDelete: {},\n availableConcepts: []\n};\n\nconst mutations = {\n setConfigToDelete(state, val) {\n state.configToDelete = val;\n },\n setShowMustBeLoggedInModal(state, val) {\n state.showMustBeLoggedInModal = val;\n },\n setShowBrowserConfigSetModal(state, val) {\n state.showBrowserConfigSetModal = val;\n },\n setShowConfirmDeleteConfigModal(state, val) {\n state.showConfirmDeleteConfigModal = val;\n },\n setCurrentConfig(state, val) {\n state.currentConfig = val;\n },\n setConfigView(state, val) {\n state.configView = val;\n },\n setConfigList(state, val) {\n state.setConfigList = val;\n },\n setConfigBusy(state, val) {\n state.configBusy = val;\n },\n setDefaultBrowserConfig(state, val) {\n state.defaultBrowserConfig = val;\n },\n setDefaultBrowserConfigName(state, val) {\n state.defaultBrowserConfigName = val;\n },\n setLocalDefaultBrowserConfig(state, val) {\n state.localDefaultBrowserConfig = val;\n },\n setAvailableConcepts(state, val) {\n state.availableConcepts = val;\n },\n setAvailableTypes(state, val) {\n state.availableTypes = val;\n }\n};\nconst actions = {\n\n};\nconst getters = {\n configToDelete: function(state) {\n return state.configToDelete;\n },\n showConfirmDeleteConfigModal: function(state) {\n return state.showConfirmDeleteConfigModal;\n },\n showMustBeLoggedInModal: function(state) {\n return state.showMustBeLoggedInModal;\n },\n showBrowserConfigSetModal: function(state) {\n return state.showBrowserConfigSetModal;\n },\n LEVEL_SEARCH_SIZE: function(state) {\n return state.LEVEL_SEARCH_SIZE;\n },\n GROUP_SEARCH_SIZE: function(state) {\n return state.GROUP_SEARCH_SIZE;\n },\n PERSON_SEARCH_SIZE: function(state) {\n return state.PERSON_SEARCH_SIZE;\n },\n DEFAULT_CUSTOM_PROPERTY_CONTEXT: function(state) {\n return state.DEFAULT_CUSTOM_PROPERTY_CONTEXT;\n },\n DEFAULT_CUSTOM_PROPERTY_RANGE: function(state) {\n return state.DEFAULT_CUSTOM_PROPERTY_RANGE;\n },\n DEFAULT_CONFIGURATION_TYPE: function(state) {\n return state.DEFAULT_CONFIGURATION_TYPE;\n },\n DEFAULT_CONFIGURATION_CONTEXT: function(state) {\n return state.DEFAULT_CONFIGURATION_CONTEXT;\n },\n LANG_STRING_RANGE: function(state) {\n return state.LANG_STRING_RANGE;\n },\n DEFAULT_HEADING: function(state) {\n return state.DEFAULT_HEADING;\n },\n CONFIG_SEARCH_SIZE(state) {\n return state.CONFIG_SEARCH_SIZE;\n },\n currentConfig(state) {\n return state.currentConfig;\n },\n configView(state) {\n return state.configView;\n },\n configList(state) {\n return state.configList;\n },\n defaultBrowserConfig(state) {\n return state.defaultBrowserConfig;\n },\n defaultBrowserConfigName(state) {\n return state.defaultBrowserConfigName;\n },\n localDefaultBrowserConfig(state) {\n return state.localDefaultBrowserConfig;\n },\n configBusy(state) {\n return state.configBusy;\n },\n availableConcepts(state) {\n return state.availableConcepts;\n },\n availableTypes(state) {\n return state.availableTypes;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n crosswalkEnabled: true,\n userManagementEnabled: true,\n configurationsEnabled: true,\n searchByOwnerNameEnabled: true,\n pluginsEnabled: true,\n loginEnabled: true,\n legacyLoginEnabled: true,\n apiLoginEnabled: false,\n shareEnabled: true,\n shareLink: false,\n ownedByMe: false\n};\n\nconst mutations = {\n crosswalkEnabled(state, bool) {\n state.crosswalkEnabled = bool;\n },\n userManagementEnabled(state, bool) {\n state.userManagementEnabled = bool;\n },\n configurationsEnabled(state, bool) {\n state.configurationsEnabled = bool;\n },\n searchByOwnerNameEnabled(state, bool) {\n state.searchByOwnerNameEnabled = bool;\n },\n pluginsEnabled(state, bool) {\n state.pluginsEnabled = bool;\n },\n loginEnabled(state, bool) {\n state.loginEnabled = bool;\n },\n apiLoginEnabled(state, bool) {\n state.apiLoginEnabled = bool;\n },\n legacyLoginEnabled(state, bool) {\n state.legacyLoginEnabled = bool;\n },\n shareEnabled(state, bool) {\n state.shareEnabled = bool;\n },\n shareLink(state, bool) {\n state.shareLink = bool;\n },\n ownedByMe(state, bool) {\n state.ownedByMe = bool;\n }\n};\n\nconst actions = {\n\n};\n\nconst getters = {\n legacyLoginEnabled: function(state) {\n return state.legacyLoginEnabled;\n },\n apiLoginEnabled: function(state) {\n return state.apiLoginEnabled;\n },\n ownedByMe: function(state) {\n return state.ownedByMe;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nimport lode from './modules/lode.js';\nimport editor from './modules/editor.js';\nimport app from './modules/app.js';\nimport user from './modules/user.js';\nimport crosswalk from './modules/crosswalk.js';\nimport environment from './modules/environment.js';\nimport configuration from './modules/configuration.js';\nimport featuresEnabled from './modules/featuresEnabled.js';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n modules: {\n lode,\n editor,\n app,\n user,\n crosswalk,\n environment,\n featuresEnabled,\n configuration\n }\n});\n","/* (ignored) */","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicModal.vue?vue&type=style&index=0&id=704681ec&prod&lang=scss\"","// extracted by mini-css-extract-plugin","import Vue from 'vue';\nimport VueProgressBar from 'vue-progressbar';\nimport App from './App.vue';\nimport './scss/theme.scss';\nimport './scss/styles.scss';\nimport router from './router';\nimport Vuex from 'vuex';\nimport Clipboard from 'v-clipboard';\nimport store from './store/index.js';\nimport InfiniteLoading from 'vue-infinite-loading';\nimport VueResource from 'vue-resource';\n\nimport VueObserveVisibility from 'vue-observe-visibility';\nimport AsyncComputed from 'vue-async-computed';\n\nvar VueScrollTo = require('vue-scrollto');\n\nconst {fetch: originalFetch} = global;\n\nlet PENDING_REQUESTS = 0;\nconst MAX_REQUESTS_COUNT = 10;\nconst INTERVAL_MS = 10;\n\nglobal.fetch = async(...args) => {\n let [resource, config] = args;\n // request interceptor here\n if (PENDING_REQUESTS >= MAX_REQUESTS_COUNT) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(global.fetch(...args));\n }, INTERVAL_MS);\n });\n } else {\n PENDING_REQUESTS++;\n try {\n if (config != null && config.headers != null && Object.values(config.headers).length === 0) {\n delete config.headers;\n }\n const response = await originalFetch(resource, config);\n // response interceptor here\n return response;\n } finally {\n PENDING_REQUESTS = Math.max(0, PENDING_REQUESTS - 1);\n }\n }\n};\n\n\nrequire(\"cassproject\");\nglobal.UUID = require('pure-uuid');\n\nconst options = {\n color: '#68C8DB',\n failedColor: '#D74C44',\n thickness: '5px',\n transition: {\n speed: '0.2s',\n opacity: '0.6s',\n termination: 300\n },\n autoRevert: true,\n location: 'top',\n inverse: false\n};\n\nVue.use(VueProgressBar, options);\nVue.use(require('vue-moment'));\nVue.use(Vuex);\nVue.use(Clipboard);\nVue.use(VueScrollTo, {\n container: \"#framework\",\n duration: 500,\n easing: \"ease\",\n offset: -150,\n force: true,\n cancelable: true,\n onStart: false,\n onDone: false,\n onCancel: false,\n x: false,\n y: true\n});\nVue.use(InfiniteLoading);\nVue.use(VueResource);\nVue.use(VueObserveVisibility);\nVue.use(AsyncComputed);\n\n// directive for clicking outside elements and performing an action\n// add v-click-outside=\"method\" to parent element to do something\nVue.directive('click-outside', {\n bind: function(element, binding, vnode) {\n element.clickOutsideEvent = function(event) {\n if (!(element === event.target || element.contains(event.target))) {\n vnode.context[binding.expression](event);\n }\n };\n document.body.addEventListener('click', element.clickOutsideEvent);\n },\n unbind: function(element) {\n document.body.removeEventListener('click', element.clickOutsideEvent);\n }\n});\n\nEcRepository.caching = true;\nEcRepository.cachingL2 = true;\n\nVue.config.productionTip = false;\n// Vue.config.silent = true;\nVue.config.warnHandler = function(msg, vm, trace) {\n if (msg === 'Invalid prop: type check failed for prop \"clickToLoad\". Expected Boolean, got String with value \"true\".') return;\n if (msg === 'Avoid using non-primitive value as key, use string/number value instead.') return;\n if (msg === \"Duplicate keys detected: '[object Object]'. This may cause an update error.\") return;\n appError((\"[Vue warn]: \" + msg + trace));\n // `trace` is the component hierarchy trace\n};\n\nglobal.appLog = function(x) {\n /* eslint-disable no-console */\n if (process.env.NODE_ENV !== 'production') {\n // console.trace(x);\n console.log(x);\n }\n /* eslint-enable no-console */\n};\n\nglobal.appError = function(x) {\n /* eslint-disable no-console */\n if (process.env.NODE_ENV !== 'production') {\n console.error(x);\n }\n /* eslint-enable no-console */\n};\n\nvar queryParams = function() {\n if (window.document.location.search == null) { return {}; }\n var hashSplit = (window.document.location.search.split(\"?\"));\n if (hashSplit.length > 1) {\n var o = {};\n var paramString = hashSplit[1];\n var parts = (paramString).split(\"&\");\n for (var i = 0; i < parts.length; i++) {\n if (o[parts[i].split(\"=\")[0]]) {\n // Allow multiple values\n o[parts[i].split(\"=\")[0]] = [o[parts[i].split(\"=\")[0]]];\n o[parts[i].split(\"=\")[0]].push(decodeURIComponent(parts[i].replace(parts[i].split(\"=\")[0] + \"=\", \"\")));\n } else {\n o[parts[i].split(\"=\")[0]] = decodeURIComponent(parts[i].replace(parts[i].split(\"=\")[0] + \"=\", \"\"));\n }\n }\n return o;\n }\n return {};\n};\nwindow.queryParams = queryParams();\n\nwindow.app = new Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app');\n","/* (ignored) */","// extracted by mini-css-extract-plugin","/* (ignored) */","/* (ignored) */","\n\n\n\n\n","global.jsonld = require('jsonld');\n\n\nconst state = {\n schemata: {},\n isSavingProperty: false,\n isSavingThing: false,\n isAddingProperty: false,\n addingProperty: '',\n addingValues: [],\n addingRange: [],\n addingChecked: [],\n removeAddingValueAtIndex: null,\n schemataLookup: {},\n rawSchemata: {},\n schemaFallback: {},\n objectModel: {},\n competencySearchModalOpen: false,\n copyOrLink: false,\n numPropertyComponentsVisible: {},\n searchType: null,\n includeRelations: true\n};\nconst actions = {\n schemata({state, commit}, schema) {\n commit('setSchemata', schema);\n if (EcArray.isArray(schema.obj)) {\n commit('setEmptySchemataLookup', schema);\n for (var i = 0; i < schema.obj.length; i++) {\n let scheme = schema.obj[i];\n commit('setSchemataLookup', {'index': i, 'schema': schema});\n if (scheme[\"http://schema.org/domainIncludes\"] != null) {\n for (var domainType of scheme[\"http://schema.org/domainIncludes\"]) {\n if (state.objectModel[domainType[\"@id\"]] == null) {\n commit('setObjectModel', {'type': domainType, 'val': {}});\n }\n let om = state.objectModel[domainType[\"@id\"]];\n om[scheme[\"@id\"]] = scheme;\n }\n }\n }\n }\n },\n schemaFallback({state}, schema) {\n for (var i = 0; i < schema.length; i++) {\n let scheme = schema[i];\n state.schemaFallback[scheme[\"@id\"]] = schema[i];\n if (scheme[\"http://schema.org/domainIncludes\"] != null) {\n for (var domainType of scheme[\"http://schema.org/domainIncludes\"]) {\n if (state.objectModel[domainType[\"@id\"]] == null) {\n state.objectModel[domainType[\"@id\"]] = {};\n }\n let om = state.objectModel[domainType[\"@id\"]];\n om[scheme[\"@id\"]] = scheme;\n }\n }\n }\n }\n};\nconst mutations = {\n setIsSavingProperty(state, value) {\n state.isSavingProperty = value;\n },\n setIsSavingThing(state, value) {\n state.isSavingThing = value;\n },\n setIsAddingProperty(state, value) {\n state.isAddingProperty = value;\n },\n setAddingProperty(state, value) {\n state.addingProperty = value;\n },\n setAddingValues(state, values) {\n let newValues = [];\n if (Array.isArray(values)) {\n values.forEach((value) => {\n if (value) {\n let newValue = trimUrl(value);\n if (newValue) newValues.push(newValue);\n }\n });\n } else {\n if (values) {\n let newValue = trimUrl(values);\n if (newValue) newValues.push(newValue);\n }\n }\n state.addingValues = newValues;\n },\n addToAddingValues(state, value) {\n let newValue = trimUrl(value);\n if (!state.addingValues) {\n state.addingValues = [];\n }\n if (newValue) {\n state.addingValues.push(newValue);\n }\n },\n setAddingRange(state, value) {\n state.addingRange = value;\n },\n setAddingChecked(state, value) {\n state.addingChecked = value;\n },\n removeAddingValueAtIndex(state, value) {\n state.removeAddingValueAtIndex = value;\n },\n setSchemata(state, schema) {\n state.schemata[schema.id] = schema.obj;\n },\n setSchemataLookup(state, payload) {\n let i = payload.index;\n let schema = payload.schema;\n state.schemataLookup[schema.id][schema.obj[i][\"@id\"]] = schema.obj[i];\n },\n setEmptySchemataLookup(state, schema) {\n state.schemataLookup[schema.id] = {};\n },\n setObjectModel(state, payload) {\n let domainType = payload.type;\n let val = payload.val;\n state.objectModel[domainType[\"@id\"]] = val;\n },\n rawSchemata(state, schema) {\n state.rawSchemata[schema.id] = schema.obj;\n },\n competencySearchModalOpen(state, bool) {\n state.competencySearchModalOpen = bool;\n },\n copyOrLink(state, bool) {\n state.copyOrLink = bool;\n },\n incrementNumPropertyComponents(state, thingId) {\n if (!state.numPropertyComponentsVisible[thingId]) {\n state.numPropertyComponentsVisible[thingId] = 0;\n }\n state.numPropertyComponentsVisible[thingId]++;\n },\n decrementNumPropertyComponents(state, thingId) {\n state.numPropertyComponentsVisible[thingId]--;\n if (state.numPropertyComponentsVisible[thingId] === 0) {\n delete state.numPropertyComponentsVisible[thingId];\n }\n },\n searchType(state, type) {\n state.searchType = type;\n },\n includeRelations(state, bool) {\n state.includeRelations = bool;\n }\n};\nconst getters = {\n isSavingProperty(state) {\n return state.isSavingProperty;\n },\n isSavingThing(state) {\n return state.isSavingThing;\n },\n isAddingProperty(state) {\n return state.isAddingProperty;\n },\n addingProperty(state) {\n return state.addingProperty;\n },\n addingValues(state) {\n return state.addingValues;\n },\n addingRange(state) {\n return state.addingRange;\n },\n addingChecked(state) {\n return state.addingChecked;\n },\n removeAddingValueAtIndex(state) {\n return state.removeAddingValueAtIndex;\n },\n includeRelations(state) {\n return state.includeRelations;\n }\n};\n\nfunction trimUrl(url) {\n if (!url) {\n return undefined;\n }\n if (url === \"\" || (url[\"@value\"] && url[\"@value\"] === \"\")) {\n return undefined;\n }\n let trimmed = url;\n if (trimmed[\"@value\"] && typeof trimmed[\"@value\"] === \"string\" && trimmed[\"@value\"].endsWith(\"/\")) {\n trimmed[\"@value\"] = trimmed[\"@value\"].slice(0, trimmed[\"@value\"].length - 1);\n }\n if (trimmed[\"@value\"] && typeof trimmed[\"@value\"] === \"string\" && trimmed[\"@value\"].startsWith(\"/\")) {\n trimmed[\"@value\"] = trimmed[\"@value\"].slice(1);\n }\n if (trimmed && typeof trimmed === \"string\" && trimmed.endsWith(\"/\")) {\n trimmed = trimmed.slice(0, trimmed.length - 1);\n }\n if (trimmed && typeof trimmed === \"string\" && trimmed.startsWith(\"/\")) {\n trimmed = trimmed.slice(1);\n }\n return trimmed;\n}\n\njsonld.documentLoader = async function(url) {\n if (url in state.rawSchemata) {\n return {\n contextUrl: null, // this is for a context via a link header\n document: state.rawSchemata[url], // this is the actual document that was loaded\n documentUrl: url // this is the actual context URL after redirects\n };\n } else {\n var context;\n var xmlhttp = new XMLHttpRequest();\n xmlhttp.onreadystatechange = function() {\n if (this.readyState === 4 && this.status === 200) {\n context = JSON.parse(this.responseText);\n state.rawSchemata[originalUrl] = context;\n }\n };\n let originalUrl = url;\n let index = url.indexOf('schema.cassproject.org');\n let ending = \"\";\n if (url.substring(url.lastIndexOf('/')).indexOf('2') === -1) {\n ending = \"/index.json-ld\";\n }\n if (index !== -1) {\n url = url.substring(index);\n url = window.location.origin + window.location.pathname + url + ending;\n }\n xmlhttp.open(\"GET\", url, false);\n xmlhttp.setRequestHeader(\"Accept\", \"application/json\");\n xmlhttp.send();\n return {\n contextUrl: null, // this is for a context via a link header\n document: context, // this is the actual document that was loaded\n documentUrl: originalUrl // this is the actual context URL after redirects\n };\n }\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n};","import dateFormat from 'dateformat';\n\nexport default {\n data() {\n return {\n conceptCtids: null,\n conceptRegistryUrls: null\n };\n },\n computed: {\n ctids: function() {\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return null;\n }\n if (this.$store.getters['editor/queryParams'] && (this.$store.getters['editor/queryParams'].ceasnDataFields !== \"true\")) {\n return null;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@value\": this.getCTID(framework.shortId())}];\n if (framework.competency) {\n for (var i = 0; i < framework.competency.length; i++) {\n obj[framework.competency[i]] = [{\"@value\": this.getCTID(framework.competency[i])}];\n }\n }\n return obj;\n },\n registryURLs: function() {\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return null;\n }\n if (this.$store.getters['editor/queryParams'] && (this.$store.getters['editor/queryParams'].ceasnDataFields !== \"true\")) {\n return null;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@id\": this.ceasnRegistryUriTransform(framework.shortId())}];\n if (framework.competency) {\n for (var i = 0; i < framework.competency.length; i++) {\n obj[framework.competency[i]] = [{\"@id\": this.ceasnRegistryUriTransform(framework.competency[i])}];\n }\n }\n return obj;\n }\n },\n methods: {\n canEditAny: function(item) {\n if (this.isAdmin()) return true;\n if (item.canEditAny == null) return true;\n return item.canEditAny(EcIdentityManager.default.getMyPks());\n },\n isAdmin: function() {\n let adminKeys = window.repo.adminKeys;\n let userIds = EcIdentityManager.default.ids;\n if (!Array.isArray(adminKeys)) return false;\n if (!Array.isArray(userIds)) return false;\n for (let userId of userIds) {\n let userKey = userId.ppk.toPk().toPem();\n for (let adminKey of adminKeys) {\n if (userKey === adminKey) {\n return true;\n }\n }\n }\n return false;\n },\n getConceptCtids: async function() {\n this.conceptCtids = null;\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return;\n }\n var me = this;\n if (this.queryParams.ceasnDataFields !== \"true\") {\n return;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@value\": this.getCTID(framework.shortId())}];\n var subCtids = async function(ary) {\n for (var i = 0; i < ary.length; i++) {\n obj[ary[i]] = [{\"@value\": me.getCTID(ary[i])}];\n var concept = await EcConcept.get(ary[i]);\n if (concept[\"skos:narrower\"]) {\n await subCtids(concept[\"skos:narrower\"]);\n }\n }\n };\n if (framework[\"skos:hasTopConcept\"]) {\n await subCtids(framework[\"skos:hasTopConcept\"]);\n }\n this.conceptCtids = obj;\n },\n getConceptRegistryUrls: async function() {\n this.conceptRegistryUrls = null;\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return;\n }\n var me = this;\n if (this.queryParams.ceasnDataFields !== \"true\") {\n return;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@id\": this.ceasnRegistryUriTransform(framework.shortId())}];\n var subURLs = async function(ary) {\n for (var i = 0; i < ary.length; i++) {\n obj[ary[i]] = [{\"@value\": me.ceasnRegistryUriTransform(ary[i])}];\n var concept = await EcConcept.get(ary[i]);\n if (concept[\"skos:narrower\"]) {\n await subURLs(concept[\"skos:narrower\"]);\n }\n }\n };\n if (framework[\"skos:hasTopConcept\"]) {\n await subURLs(framework[\"skos:hasTopConcept\"]);\n }\n this.conceptRegistryUrls = obj;\n },\n spitEvent: function(message, id, page) {\n var framework = this.framework ? this.framework : this.$store.state.editor.framework;\n var selectedCompetency = this.$store.state.editor.selectedCompetency;\n let frameworkName = null;\n if (framework) {\n if (framework[\"dcterms:title\"]) {\n frameworkName = schema.Thing.getDisplayStringFrom(framework[\"dcterms:title\"]);\n } else {\n frameworkName = framework.getName();\n }\n }\n let compName = null;\n if (selectedCompetency) {\n if (selectedCompetency[\"skos:prefLabel\"]) {\n compName = schema.Thing.getDisplayStringFrom(selectedCompetency[\"skos:prefLabel\"]);\n } else {\n compName = selectedCompetency.getName();\n }\n }\n var evt = {\n message: message,\n changed: id,\n selectedFramework: framework == null ? null : framework.shortId(),\n selectedCompetency: selectedCompetency == null ? null : selectedCompetency.shortId(),\n selectedFrameworkObject: framework == null ? null : JSON.parse(framework.toJson()),\n selectedCompetencyObject: selectedCompetency == null ? null : JSON.parse(selectedCompetency.toJson()),\n selectedFrameworkName: frameworkName,\n selectedCompetencyName: compName,\n visiblePage: page\n };\n if (this.queryParams && this.queryParams.ceasnDataFields === \"true\") {\n if (framework != null) {\n if (framework.getGuid != null) {\n if (framework.getGuid().startsWith(\"ce-\")) {\n evt.selectedFrameworkCtid = framework == null ? null : framework.getGuid();\n } else if (framework.getGuid().matches(\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\")) {\n evt.selectedFrameworkCtid = framework == null ? null : \"ce-\" + framework.getGuid();\n } else {\n evt.selectedFrameworkCtid = \"ce-\" + new UUID(3, \"nil\", framework.shortId()).format();\n }\n }\n }\n if (selectedCompetency != null) {\n if (selectedCompetency.getGuid != null) {\n if (selectedCompetency.getGuid().startsWith(\"ce-\")) {\n evt.selectedCompetencyCtid = selectedCompetency == null ? null : selectedCompetency.getGuid();\n } else if (selectedCompetency.getGuid().matches(\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\")) {\n evt.selectedCompetencyCtid = selectedCompetency == null ? null : \"ce-\" + selectedCompetency.getGuid();\n } else {\n evt.selectedCompetencyCtid = \"ce-\" + new UUID(3, \"nil\", this.framework.shortId() + selectedCompetency.shortId()).format();\n }\n }\n }\n }\n appLog(evt);\n if (parent != null) {\n if (this.queryParams && this.queryParams.origin != null && this.queryParams.origin !== '') {\n parent.postMessage(evt, this.queryParams.origin);\n }\n }\n },\n setDefaultLanguage: function() {\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n var defaultLanguage;\n if (framework && framework[\"ceasn:inLanguage\"]) {\n defaultLanguage = EcArray.isArray(framework[\"ceasn:inLanguage\"]) ? framework[\"ceasn:inLanguage\"][0] : framework[\"ceasn:inLanguage\"];\n } else if (framework && framework[\"schema:inLanguage\"]) {\n defaultLanguage = EcArray.isArray(framework[\"schema:inLanguage\"]) ? framework[\"schema:inLanguage\"][0] : framework[\"schema:inLanguage\"];\n } else if (framework && framework[\"dcterms:language\"]) {\n defaultLanguage = EcArray.isArray(framework[\"dcterms:language\"]) ? framework[\"dcterms:language\"][0] : framework[\"dcterms:language\"];\n } else if (navigator.language || navigator.userLanguage) {\n defaultLanguage = navigator.language || navigator.userLanguage;\n } else {\n defaultLanguage = \"en\";\n }\n this.$store.commit('editor/defaultLanguage', defaultLanguage);\n },\n get: function(server, service, headers, success, failure) {\n var url = EcRemote.urlAppend(server, service);\n url = EcRemote.upgradeHttpToHttps(url);\n var xhr = null;\n if ((typeof httpStatus) === \"undefined\") {\n xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n if (headers != null) {\n var keys = EcObject.keys(headers);\n for (var i = 0; i < keys.length; i++) {\n xhr.setRequestHeader(keys[i], headers[keys[i]]);\n }\n }\n var xhrx = xhr;\n xhr.onreadystatechange = function() {\n if (xhrx.readyState === 4 && xhrx.status === 200) {\n if (success != null) {\n success(xhrx.responseText);\n } else if (xhrx.readyState === 4) {\n if (failure != null) {\n failure(xhrx.status + \" \" + xhrx.responseText);\n }\n }\n }\n };\n xhr.onload = function() {\n if (xhr.status !== 200) {\n failure(xhr.status);\n }\n };\n xhr.onerror = function() {\n failure(\"Failed while sending request.\");\n };\n }\n if (xhr != null) {\n (xhr)[\"timeout\"] = EcRemote.timeout;\n }\n if ((typeof httpStatus) !== \"undefined\") {\n if (success != null) {\n success(JSON.stringify(httpGet(url)));\n }\n } else {\n xhr.send();\n }\n },\n resolveNameFromUrl: function(url) {\n this.get(url, null, null, function(data) {\n var name = null;\n if (data) {\n if (data[0] === \"<\") {\n return;\n }\n data = JSON.parse(data);\n if (data['ceterms:name']) {\n name = data['ceterms:name'];\n } else if (data['ceasn:competencyText']) {\n name = data['ceasn:competencyText'];\n } else if (data['name']) {\n name = data['name'];\n } else if (data['schema:name']) {\n name = data['schema:name'];\n } else if (data['title']) {\n name = data['title'];\n } else if (data['skos:prefLabel']) {\n name = data['skos:prefLabel'];\n } else if (data['title']) {\n name = data['title'];\n } else if (data['@graph'] && data['@graph'][0]) {\n if (data['@graph'][0]['ceterms:name']) {\n name = data['@graph'][0]['ceterms:name'];\n } else if (data['@graph'][0]['name']) {\n name = data['@graph'][0]['name'];\n } else if (data['@graph'][0]['schema:name']) {\n name = data['@graph'][0]['schema:name'];\n } else if (data['@graph'][0]['title']) {\n name = data['@graph'][0]['title'];\n } else if (data['@graph'][0]['skos:prefLabel']) {\n name = data['@graph'][0]['skos:prefLabel'];\n }\n }\n // If it's a langstring\n name = schema.Thing.getDisplayStringFrom(name);\n // If still object, display value\n if (EcObject.isObject(name)) {\n var langs = Object.keys(name);\n name = name[langs[0]];\n }\n }\n return name;\n }, function(error) {\n appLog(error);\n });\n },\n conditionalDelete: function(id, depth) {\n var me = this;\n (function(id, depth) {\n Task.asyncImmediate(function(callback) {\n if (depth === undefined || depth == null) depth = 0;\n if (id == null || id === undefined) {\n appLog(\"ID is undefined.\");\n }\n if (depth < 5) {\n EcFramework.search(window.repo, \"\\\"\" + id + \"\\\"\", async function(results) {\n if (results.length <= 0) {\n appLog(\"No references found for \" + id + \"... deleting.\");\n let obj = await EcRepository.get(id);\n window.repo.deleteRegistered(obj, function(success) {\n if (obj.type === \"Level\") {\n me.$store.commit('editor/refreshLevels', true);\n }\n callback();\n }, function(failure) {\n appLog(failure);\n callback();\n });\n } else {\n appLog(results.length + \" references found for \" + id + \"... Not deleting. Will see again in another second.\");\n callback();\n setTimeout(function() {\n me.conditionalDelete(id, depth + 1);\n }, 1000);\n }\n }, appError, {});\n } else {\n callback();\n }\n });\n })(id, depth);\n },\n selectButton: async function(selectedArray) {\n var ary = [];\n if (!selectedArray) {\n selectedArray = this.selectedArray;\n }\n for (var i = 0; i < selectedArray.length; i++) {\n if (this.queryParams.selectVerbose === \"true\" && this.$store.getters['editor/conceptMode'] !== true && this.$store.getters['editor/progressionMode'] !== true) {\n if (this.queryParams.selectExport === \"ctdlasn\") {\n var link;\n if (EcRepository.shouldTryUrl(selectedArray[i]) === false && selectedArray[i].indexOf(window.repo.selectedServer) === -1) {\n link = window.repo.selectedServer + \"ceasn/\" + EcCrypto.md5(selectedArray[i]);\n } else {\n link = selectedArray[i].replace(\"/data/\", \"/ceasn/\");\n }\n let success = await EcRemote.getExpectingObject(link);\n if (success) {\n ary.push(success);\n }\n } else {\n ary.push(JSON.parse((await EcCompetency.get(selectedArray[i])).toJson()));\n }\n } else if (this.queryParams.selectVerbose === \"true\") {\n ary.push(JSON.parse((await EcConcept.get(selectedArray[i])).toJson()));\n } else {\n ary.push(selectedArray[i]);\n }\n }\n if (this.queryParams.selectRelations === \"true\" && this.framework.relation) {\n for (var i = 0; i < this.framework.relation.length; i++) {\n var relation = await EcAlignment.get(this.framework.relation[i]);\n if (EcArray.has(selectedArray, relation.target)) {\n if (this.queryParams.selectVerbose === \"true\") {\n ary.push(JSON.parse((relation).toJson()));\n } else {\n ary.push(relation.shortId());\n }\n }\n }\n }\n var currentFramework = this.framework;\n if (this.queryParams.selectExport === \"ctdlasn\" && this.$store.getters['editor/conceptMode'] !== true && this.$store.getters['editor/progressionMode'] !== true) {\n if (this.framework != null) {\n var link;\n if (EcRepository.shouldTryUrl(this.framework.id) === false && this.framework.id.indexOf(window.repo.selectedServer) === -1) {\n link = window.repo.selectedServer + \"ceasn/\" + EcCrypto.md5(this.framework.shortId());\n } else {\n link = this.framework.id.replace(\"/data/\", \"/ceasn/\");\n }\n let success = await EcRemote.getExpectingObject(link);\n if (success) {\n // success = JSON.parse(success);\n if (success[\"@graph\"]) {\n currentFramework = success[\"@graph\"][0];\n }\n }\n }\n }\n var message = {\n message: \"selected\",\n selected: ary,\n type: ((this.$store.getters['editor/conceptMode'] === true || this.$store.getters['editor/progressionMode'] === true) ? 'Concept' : 'Competency'),\n selectedFramework: currentFramework\n };\n message = JSON.parse(JSON.stringify(message));\n appLog(message);\n parent.postMessage(message, this.queryParams.origin);\n },\n addLevel: async function(selectedCompetency, optionalLevelUrlOrName) {\n var c;\n var me = this;\n var framework = this.framework ? this.framework : this.$store.getters['editor/framework'];\n var initialLevels = framework.level ? framework.level.slice() : null;\n if (!optionalLevelUrlOrName || !optionalLevelUrlOrName.includes('http')) {\n c = new EcLevel();\n if (this.queryParams.newObjectEndpoint != null) {\n c.generateShortId(this.queryParams.newObjectEndpoint);\n } else {\n c.generateId(window.repo.selectedServer);\n }\n c[\"schema:dateCreated\"] = new Date().toISOString();\n c.name = (optionalLevelUrlOrName && optionalLevelUrlOrName !== \"\") ? optionalLevelUrlOrName : \"New Level\";\n c.competency = selectedCompetency;\n } else {\n optionalLevelUrlOrName = optionalLevelUrlOrName[0];\n var c = await EcRepository.get(optionalLevelUrlOrName);\n if (!c.competency) {\n c.competency = [];\n } else if (!EcArray.isArray(c.competency)) {\n c.competency = [c.competency];\n }\n c.competency.push(selectedCompetency);\n }\n framework[\"schema:dateModified\"] = new Date().toISOString();\n window.repo.saveTo(c, async function() {\n framework.addLevel(c.shortId());\n var edits = [];\n if (!optionalLevelUrlOrName || !optionalLevelUrlOrName.includes('http')) {\n edits.push({operation: \"addNew\", id: c.shortId()});\n }\n edits.push({operation: \"update\", id: framework.shortId(), fieldChanged: [\"level\"], initialValue: [initialLevels], changedValue: [framework.level]});\n me.$store.commit('editor/addEditsToUndo', edits);\n me.$store.commit('editor/framework', framework);\n if (me.$store.state.editor.private === true) {\n if (EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n }\n window.repo.saveTo(framework, function() {\n me.$store.commit('lode/setIsAddingProperty', false);\n me.$store.commit('editor/refreshLevels', true);\n }, appError);\n }, appError);\n },\n saveCheckedLevels: async function(selectedCompetency, checkedOptions, allOptions) {\n let competencyId = [];\n if (EcArray.isArray(selectedCompetency)) {\n competencyId = selectedCompetency;\n } else {\n competencyId.push(EcRemoteLinkedData.trimVersionFromUrl(selectedCompetency[\"@id\"]));\n }\n var initialLevels = this.framework.level ? this.framework.level.slice() : null;\n var frameworkChanged = false;\n var edits = [];\n var me = this;\n for (var i = 0; i < allOptions.length; i++) {\n if (!this.framework.level) {\n this.framework.level = [];\n }\n // If selected\n if (checkedOptions.indexOf(allOptions[i].val) !== -1) {\n var level = await EcLevel.get(allOptions[i].val);\n var initialComp = JSON.parse(JSON.stringify(level.competency));\n if (!EcArray.isArray(level.competency)) {\n level.competency = level.competency == null ? [] : [level.competency];\n }\n let levelChanged = false;\n for (let each in competencyId) {\n if (level.competency.indexOf(competencyId[each]) === -1) {\n level.competency.push(competencyId[each]);\n levelChanged = true;\n }\n }\n if (levelChanged) {\n edits.push({operation: \"update\", id: level.shortId(), fieldChanged: [\"competency\"], initialValue: [initialComp], changedValue: [level.competency]});\n window.repo.saveTo(level, function() {\n me.$store.commit('editor/refreshLevels', true);\n }, appError);\n }\n if (this.framework.level.indexOf(level.shortId()) === -1) {\n this.framework.addLevel(level.shortId());\n frameworkChanged = true;\n }\n } else {\n // If not selected\n var level = await EcLevel.get(allOptions[i].val);\n var initialComp = JSON.parse(JSON.stringify(level.competency));\n let levelChanged = false;\n for (let each in competencyId) {\n if (level.competency && level.competency.indexOf(competencyId[each]) !== -1) {\n EcArray.setRemove(level.competency, competencyId[each]);\n levelChanged = true;\n }\n }\n if (levelChanged) {\n edits.push({operation: \"update\", id: level.shortId(), fieldChanged: [\"competency\"], initialValue: [initialComp], changedValue: [level.competency]});\n window.repo.saveTo(level, function() {\n me.$store.commit('editor/refreshLevels', true);\n }, appError);\n }\n // If level doesn't have any competencies attached, remove it from the framework.\n if ((!level.competency || (level.competency && level.competency.length === 0)) && this.framework.level.indexOf(level.shortId()) !== -1) {\n EcArray.setRemove(this.framework.level, level.shortId());\n frameworkChanged = true;\n }\n }\n }\n if (frameworkChanged) {\n edits.push({operation: \"update\", id: this.framework.shortId(), fieldChanged: [\"level\"], initialValue: [initialLevels], changedValue: [this.framework.level]});\n this.saveFramework();\n }\n this.$store.commit('editor/addEditsToUndo', edits);\n this.$store.commit('lode/setAddingChecked', []);\n this.$store.commit('lode/setIsAddingProperty', false);\n },\n saveFramework: async function() {\n this.framework[\"schema:dateModified\"] = new Date().toISOString();\n var framework = this.framework;\n this.$store.commit('editor/framework', framework);\n if (this.$store.state.editor.private === true && EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n window.repo.saveTo(framework, function() {}, appError);\n },\n removeLevelFromFramework: async function(levelId) {\n var initialLevels = this.framework.level ? this.framework.level.slice() : null;\n this.framework.removeLevel(levelId);\n var level = await EcRepository.get(levelId);\n this.$store.commit('editor/addEditsToUndo', [\n {operation: \"delete\", obj: level},\n {operation: \"update\", id: this.framework.shortId(), fieldChanged: [this.framework.level], initialValue: [initialLevels], changedValue: [this.framework.level]}\n ]);\n this.conditionalDelete(levelId);\n this.saveFramework();\n this.$store.commit('editor/refreshLevels', true);\n },\n addRelationsToFramework: async function(selectedCompetency, property, values) {\n if (values.length > 0) {\n selectedCompetency = await EcRepository.get(selectedCompetency);\n await this.addAlignments(values, selectedCompetency, property);\n }\n },\n addAlignments: async function(targets, thing, relationType, allowSave) {\n if (this.$store.getters['editor/queryParams'].concepts === \"true\" || this.$store.getters['editor/conceptMode'] === true || this.$store.getters['editor/progressionMode'] === true) {\n return this.addConceptAlignments(targets, thing, relationType);\n }\n let urlProperties = [\n \"ceasn:knowledgeEmbodied\",\n \"ceasn:skillEmbodied\",\n \"ceasn:taskEmbodied\",\n \"ceasn:abilityEmbodied\",\n \"ceasn:comprisedOf\",\n \"ceasn:derivedFrom\",\n \"ceasn:inferredCompetency\",\n \"ceasn:isVersionOf\",\n \"ceasn:alignTo\",\n \"ceasn:alignFrom\"\n ];\n if (urlProperties.includes(relationType)) {\n // This property is attached to competency, not a relation attached to framework\n return this.addRelationAsCompetencyField(targets, thing, relationType, allowSave);\n }\n return new Promise(async(resolve, reject) => {\n var framework = this.$store.state.editor.framework;\n var edits = [];\n var initialRelations = framework.relation ? framework.relation.slice() : null;\n for (var i = 0; i < targets.length; i++) {\n var r = new EcAlignment();\n if (this.$store.getters['editor/queryParams'].newObjectEndpoint != null) {\n r.generateShortId(this.$store.getters['editor/queryParams'].newObjectEndpoint);\n } else {\n r.generateId(window.repo.selectedServer);\n }\n edits.push({operation: \"addNew\", id: r.shortId()});\n r[\"schema:dateCreated\"] = new Date().toISOString();\n r.target = EcRemoteLinkedData.trimVersionFromUrl(targets[i]);\n if (thing.id) {\n r.source = thing.shortId();\n } else {\n r.source = EcRemoteLinkedData.trimVersionFromUrl(thing[\"@id\"]);\n }\n if (r.target === r.source) {\n return;\n }\n r.relationType = relationType;\n if (r.relationType === \"broadens\") {\n var dosedo = r.target;\n r.target = r.source;\n r.source = dosedo;\n r.relationType = \"narrows\";\n }\n if (EcIdentityManager.default.ids.length > 0) {\n r.addOwner(EcIdentityManager.default.ids[0].ppk.toPk());\n }\n if (framework.owner && framework.owner.length > 0) {\n for (var j = 0; j < framework.owner.length; j++) {\n var owner = framework.owner[j];\n r.addOwner(EcPk.fromPem(owner));\n }\n }\n if (framework.reader && framework.reader.length > 0) {\n for (var j = 0; j < framework.reader.length; j++) {\n var reader = framework.reader[j];\n r.addReader(EcPk.fromPem(reader));\n }\n }\n if (this.$store.state.editor.private === true) {\n r = await EcEncryptedValue.toEncryptedValue(r);\n }\n await new Promise((res, rej) => {\n window.repo.saveTo(r, res, rej);\n });\n if (thing.type === 'Concept') {\n if (framework.relation == null) {\n framework.relation = [];\n }\n let isNew = true;\n let idx = 0;\n while (isNew && idx < framework.relation.length) {\n if (EcRemoteLinkedData.trimVersionFromUrl(framework.relation[idx]).equals(r.id)) {\n isNew = false;\n }\n idx++;\n }\n if (isNew) {\n framework.relation.push(r.id);\n }\n } else {\n framework.addRelation(r.id);\n }\n }\n edits.push({operation: \"update\", id: framework.shortId(), fieldChanged: [\"relation\"], initialValue: [initialRelations], changedValue: [framework.relation]});\n this.$store.commit('editor/addEditsToUndo', edits);\n this.$store.commit('editor/framework', framework);\n if (this.$store.state.editor.private === true && EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n window.repo.saveTo(framework, resolve, reject);\n });\n },\n addRelationAsCompetencyField: async function(targets, thing, relationType, allowSave) {\n return new Promise(async(resolve, reject) => {\n var initialValue = thing[relationType] ? thing[relationType].slice() : null;\n for (var i = 0; i < targets.length; i++) {\n if (thing[relationType] == null) {\n thing[relationType] = [];\n }\n thing[relationType].push(targets[i]);\n }\n this.$store.commit('editor/addEditsToUndo', [{operation: \"update\", id: thing.shortId(), fieldChanged: [relationType], initialValue: [initialValue], changedValue: [thing[relationType]]}]);\n thing[\"schema:dateModified\"] = new Date().toISOString();\n if (this.$store.state.editor.private === true) {\n if (EcEncryptedValue.encryptOnSaveMap[thing.id] !== true) {\n thing = await EcEncryptedValue.toEncryptedValue(thing);\n }\n }\n window.repo.saveTo(thing, resolve, reject);\n });\n },\n removeRelationFromFramework: async function(source, property, target) {\n return new Promise((resolve, reject) => {\n var me = this;\n var initialRelations = this.framework.relation ? this.framework.relation.slice() : null;\n var edits = [];\n new EcAsyncHelper().each(this.framework.relation, function(relation, callback) {\n EcAlignment.get(relation, function(r) {\n if (property === \"broadens\") {\n if (r.target === source && r.source === target && r.relationType === \"narrows\") {\n me.framework.removeRelation(r.shortId());\n edits.push({operation: \"delete\", obj: r});\n me.conditionalDelete(r.shortId());\n callback();\n } else {\n callback();\n }\n } else if (r.source === source && r.target === target && r.relationType === property) {\n me.framework.removeRelation(r.shortId());\n edits.push({operation: \"delete\", obj: r});\n me.conditionalDelete(r.shortId());\n callback();\n } else {\n callback();\n }\n }, callback);\n }, async function() {\n var framework = me.framework;\n edits.push({operation: \"update\", id: framework.shortId(), fieldChanged: [\"relation\"], initialValue: [initialRelations], changedValue: [framework.relation]});\n me.$store.commit('editor/framework', framework);\n me.$store.commit('editor/addEditsToUndo', edits);\n if (me.$store.state.editor.private === true && EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n window.repo.saveTo(framework, resolve, reject);\n });\n });\n },\n ceasnRegistryUriTransform: function(uri) {\n var endpoint = null;\n if (this.$store.getters['editor/queryParams'] && (this.$store.getters['editor/queryParams'].newObjectEndpoint)) {\n endpoint = this.queryParams.newObjectEndpoint;\n }\n if (endpoint == null) {\n return uri;\n }\n if (uri.startsWith(endpoint)) {\n return uri;\n }\n var ctid = this.getCTID(uri);\n if (endpoint.indexOf(\"ce-\") !== -1) {\n ctid = ctid.substring(3);\n }\n return endpoint + ctid;\n },\n getCTID: function(uri) {\n var uuid = null;\n var parts = EcRemoteLinkedData.trimVersionFromUrl(uri).split(\"/\");\n uuid = parts[parts.length - 1];\n uri = EcRemoteLinkedData.trimVersionFromUrl(uri);\n if (!uuid.matches(\"^(ce-)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\")) {\n uuid = new UUID(3, \"nil\", uri).format();\n }\n if (uuid.indexOf(\"ce-\") === -1) {\n uuid = \"ce-\" + uuid;\n }\n return uuid;\n },\n canViewCommentsCurrentFramework: function() {\n // TODO expand on this\n let lop = this.$store.state.user.loggedOnPerson;\n if (lop && lop.id && lop.id !== '') return true;\n else return false;\n },\n canAddCommentsCurrentFramework: function() {\n // TODO expand on this\n let lop = this.$store.state.user.loggedOnPerson;\n if (lop && lop.id && lop.id !== '') return true;\n else return false;\n },\n toPrettyDateString: function(dateInMilliseconds) {\n try {\n let d = new Date(dateInMilliseconds);\n return dateFormat(d, \"mm/dd/yy, h:MM:ss TT\");\n } catch (err) {\n return 'unknown';\n }\n }\n }\n};","/* (ignored) */","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///crypto (ignored)?680d","webpack:///buffer (ignored)?3b56","webpack:///buffer (ignored)?9f36","webpack:///rdf-canonize-native (ignored)?d49c","webpack:///./util.inspect (ignored)","webpack:///rdf-canonize-native (ignored)","webpack:///got (ignored)","webpack:///./src/components/modals/DynamicModal.vue","webpack:///src/components/modals/DynamicModal.vue","webpack:///./src/components/modals/DynamicModal.vue?2a07","webpack:///./src/components/modals/DynamicModal.vue?da8f","webpack:///./src/App.vue","webpack:///./src/App.vue?11bf","webpack:///./src/App.vue?315a","webpack:///util (ignored)?9bcf","webpack:///./src/App.vue?dfa2","webpack:///./src/router.js","webpack:///./src/store/modules/editor.js","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/user.js","webpack:///./src/store/modules/crosswalk.js","webpack:///./src/store/modules/environment.js","webpack:///./src/store/modules/configuration.js","webpack:///./src/store/modules/featuresEnabled.js","webpack:///./src/store/index.js","webpack:///util (ignored)?6457","webpack:///./src/components/modals/DynamicModal.vue?79f9","webpack:///./src/scss/theme.scss?d965","webpack:///./src/main.js","webpack:///buffer (ignored)","webpack:///./src/components/modals/DynamicModal.vue?fef9","webpack:///crypto (ignored)","webpack:///util (ignored)","webpack:///src/App.vue","webpack:///./src/store/modules/lode.js","webpack:///./src/mixins/common.js","webpack:///util (ignored)?1ada","webpack:///./src/App.vue?b442","webpack:///./src/scss/styles.scss?e7a7"],"names":["render","_vm","_c","_self","dynamicModal","tag","attrs","title","dynamicModalContent","on","createDirectory","$event","$emit","createAnotherDirectory","close","cancel","staticRenderFns","name","props","type","default","String","color","components","Share","MultiEdit","SearchModal","AddComment","DeleteCommentConfirm","DeleteDirectoryConfirm","SupportedImportDetails","Single","AddDirectory","DeleteConfigurationConfirm","FrameworkConfiguration","DeleteCompetencyConfirm","DeleteFrameworkConfirm","DeleteLevelConfirm","DeleteConceptConfirm","DeleteConceptSchemeConfirm","RemoveCompetencyConfirm","ExportOptionsModal","RequiredPropertyModal","DuplicateImport","ImportError","ShareAssertions","LogoutSuccess","MessageOfTheDay","data","computed","showModal","$store","getters","component","watch","class","editorClass","bannerMessage","staticClass","style","bannerStyle","_v","_s","_e","saveDirectory","saveDirectoryAndAddAnother","showSideNav","showRightAside","createNewFramework","createNewConceptScheme","createNewProgressionModel","createNewCollection","Vue","use","Router","base","process","scrollBehavior","to","from","savedPosition","hash","selector","offset","x","y","routes","path","_default","sidebar","topbar","alias","Vuex","state","framework","organization","selectedCompetency","queryParams","defaultLanguage","webSocketBackoff","selectCompetencyRelation","selectingCompetencies","private","newCompetency","newFramework","t3Profile","changedObject","configuration","commonPathIframe","iframeCompetencyPathInterframework","iframeConceptPath","addCommentAboutId","addCommentType","commentToEdit","commentToReply","frameworkCommentDataLoaded","frameworkCommentList","frameworkCommentPersonMap","commentsToDelete","commentScrollTo","editsToUndo","lastEditToUndo","recomputeHierarchy","recomputePrecedence","recomputePrecedenceAfterReorder","selectedCompetenciesAsProperties","refreshLevels","refreshAlignments","refreshProperties","conceptMode","collectionMode","progressionMode","cutId","copyId","paste","cutOrCopyContainerId","nodeInFocus","relations","setPropertyLevel","addAnother","itemToDelete","itemToRemove","itemToExport","manageAssertions","assertions","badgePk","me","subject","people","firstSearchProcessing","searchingAssertions","mutations","f","comp","params","lang","webSocketBackoffIncrease","_private","bool","r","id","config","val","setAddCommentAboutId","setAddCommentType","setCommentToEdit","setCommentToReply","setCommentsToDelete","clearFrameworkCommentData","setFrameworkCommentDataLoaded","setFrameworkCommentList","setFrameworkCommentPersonMap","setCommentScrollTo","addEditsToUndo","edits","push","setLastEditToUndo","edit","boolean","comps","obj","level","setItemToDelete","setItemToRemove","setItemToExport","setManageAssertions","setAssertions","removeAssertion","EcArray","setRemove","removeAssertionAtIndex","splice","addAssertion","setAdd","setBadgePk","setMe","setSubject","setPeople","setFirstSearchProcessing","setSearchingAssertions","actions","getDirectoryChildren","instance","directory","children","frameworks","apply","_toConsumableArray","resources","directories","context","commit","pop","getThing","payload","Promise","resolve","reject","url","EcRemote","urlAppend","server","service","upgradeHttpToHttps","fetch","headers","then","resp","success","catch","err","failure","searchForAssertions","doSearch","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","start","count","wrap","_callee2$","_context2","prev","next","abrupt","EcAssertion","search","window","repo","_ref2","_callee","results","_callee$","_context","length","stop","_x3","arguments","size","_x","_x2","eah","EcAsyncHelper","each","assertion","callback","assertionDateDecrypted","getAssertionDateAsync","date","appError","computeBecause","evidences","explanations","e","evidenceString","eoriginal","startsWith","JSON","parse","EcObject","isObject","verb","display","en","object","definition","result","Math","round","score","scaled","interactionType","text","original","failureFunc","EcRepository","get","isAny","ChooseAction","getTypes","creativeWork","sort","a","b","getMe","getSubject","namespaced","sideNavEnabled","rightAsideContent","rightAsideObject","canViewComments","canAddComments","pluginLastUpdate","pluginToLaunch","pluginToLaunchLastUpdate","showToolBar","commentsEnabled","versionsEnabled","draggingEnabled","isDragging","draggable","contentSection","searchTerm","quickFilters","applySearchTo","sortResults","refreshSearch","searchFrameworksInCompetencySearch","modal","objForShareModal","directoryList","selectedDirectory","searchingInDirectory","editDirectory","import","files","transition","status","fileType","firstImport","Boolean","errors","feedback","duplicates","skip","serverUrl","frameworkName","frameworkDescription","importCsv","nameColumn","descriptionColumn","scopeColumn","idColumn","sourceColumn","relationColumn","targetColumn","importText","csvColumns","csvRelationColumns","csvRelationFile","importModalParams","allowCancel","banner","message","background","motd","curatedPlugins","closeSideNav","closeRightAside","_rightAsideObject","encryptedType","t0","EcEncryptedValue","fromEncryptedValue","t1","sent","copyFrom","call","closeModal","value","importFiles","setCanViewComments","setCanAddComments","clearImportFiles","resetImport","descriptionCcolumn","importTransition","importFileType","importType","addImportError","clearImportErrors","importStatus","importAllowCancel","importFeedback","importDuplicates","importSkip","importFramework","importFrameworkName","importFrameworkNameColumn","frameworkNameColumn","importFrameworkScopeColumn","frameworkScopeColumn","importFrameworkIdColumn","frameworkIdColumn","importFrameworkDescription","importServerUrl","importUrl","importNameColumn","importDescriptionColumn","importScopeColumn","importSourceColumn","importTargetColumn","importRelationColumn","importIdColumn","singleQuickFilter","i","findIndex","filter","checked","clearSearchFilters","_i","_i2","selectDirectory","list","setBanner","setMotd","setCuratedPlugins","clearImport","refreshDirectories","directoryIds","paramObj","EcDirectory","dirs","canEditAny","EcIdentityManager","getMyPks","has","importErrors","filterByOwnedByMe","find","Array","isArray","filterByNotOwnedByMe","filterByConfigMatchDefault","bannerColor","bannerBackground","motdTitle","motdMessage","loggedOnPerson","repoInit","ssoLogin","ssoLogout","ssoPublicKey","lastLogin","personObj","ids","repositorySsoOptions","step","frameworkSource","frameworkSourceRelationships","frameworkTarget","frameworkTargetRelationships","relevantExistingAlignmentsMap","relevantExistingAlignmentsMapLastUpdate","alignedCompetenciesList","workingAlignmentsMap","source","targets","initialTargets","removedTargets","changed","alignmentsToSave","alignmentsToDelete","sourceState","targetState","targetNodesToHighlight","enabledRelationshipTypes","enabledRelationshipTypesLastUpdate","workingAlignmentsSource","c","workingAlignmentsTargets","workingAlignmentsType","s","t","populateAlignedCompetenciesList","alignedCompetencies","sourceComps","Object","keys","_sourceComps","sc","alignTypes","_alignTypes","scAt","targetIds","_i3","_targetIds","ti","populateWorkingAlignmentMap","sourceTypeAlignMap","_i4","_targetIds2","resetFrameworkSourceRelationships","resetFrameworkTargetRelationships","resetCrosswalkFrameworks","resetCrosswalkAlignmentsAndState","resetCrosswalk","resetWorkingAlignmentsMap","addWorkingAlignmentsTarget","remTargets","filteredRemovedTargets","shouldSetToChanged","_iterator","_createForOfIteratorHelper","_step","n","done","includes","removeWorkingAlignmentsTarget","filtered","target","_iterator2","_step2","removeAlignmentFromRelevantAlignmentsMap","alignProps","ream","addAlignmentToRelevantAlignmentsMap","ecaObj","relationType","removeAlignmentFromAlignmentsToSave","newAts","_iterator3","_step3","removeAlignmentFromAlignmentsToDelete","newAtd","_iterator4","_step4","appendAlignmentsToDelete","alignment","appendAlignmentsToSave","cassApiLocation","CONFIG_SEARCH_SIZE","DEFAULT_CONFIGURATION_TYPE","DEFAULT_CONFIGURATION_CONTEXT","LANG_STRING_RANGE","DEFAULT_HEADING","LEVEL_SEARCH_SIZE","PERSON_SEARCH_SIZE","DEFAULT_CUSTOM_PROPERTY_CONTEXT","DEFAULT_CUSTOM_PROPERTY_RANGE","defaultBrowserConfig","defaultBrowserConfigName","localDefaultBrowserConfig","configBusy","configList","configView","currentConfig","showConfirmDeleteConfigModal","showMustBeLoggedInModal","showBrowserConfigSetModal","configToDelete","availableConcepts","setConfigToDelete","setShowMustBeLoggedInModal","setShowBrowserConfigSetModal","setShowConfirmDeleteConfigModal","setCurrentConfig","setConfigView","setConfigList","setConfigBusy","setDefaultBrowserConfig","setDefaultBrowserConfigName","setLocalDefaultBrowserConfig","setAvailableConcepts","setAvailableTypes","availableTypes","GROUP_SEARCH_SIZE","crosswalkEnabled","userManagementEnabled","configurationsEnabled","searchByOwnerNameEnabled","pluginsEnabled","loginEnabled","legacyLoginEnabled","apiLoginEnabled","shareEnabled","shareLink","ownedByMe","Store","modules","lode","editor","app","user","crosswalk","environment","featuresEnabled","VueScrollTo","require","_global","global","originalFetch","PENDING_REQUESTS","MAX_REQUESTS_COUNT","INTERVAL_MS","_len","args","_key","resource","response","_args","setTimeout","_global2","values","max","finish","UUID","options","failedColor","thickness","speed","opacity","termination","autoRevert","location","inverse","VueProgressBar","Clipboard","container","duration","easing","force","cancelable","onStart","onDone","onCancel","InfiniteLoading","VueResource","VueObserveVisibility","AsyncComputed","directive","bind","element","binding","vnode","clickOutsideEvent","event","contains","expression","document","body","addEventListener","unbind","removeEventListener","caching","cachingL2","productionTip","warnHandler","msg","vm","trace","appLog","hashSplit","split","o","paramString","parts","decodeURIComponent","replace","router","store","h","App","$mount","mixins","common","DynamicModal","navBarActive","itemsSaving","showNav","linkedPerson","addAnotherDirectory","appVersion","version","$router","beforeDestroy","cappend","messageListener","methods","initializeApp","_this","origin","VUE_APP_SELECTEDSERVER","$route","query","stringify","key","endsWith","concepts","ceasnDataFields","show","selectedServer","init","readContacts","readIdentities","findLinkedPersonForIdentity","defaultPlugins","plugins","loginInfo","pers","ppk","ident","per","fetchServerAdminKeys","ssoViaP1","corsOrigins","EcPerson","getByPk","toPk","displayName","getName","ssoAdditionalPublicKeys","EcPpkFacade","fromPem","EcIdentity","addIdentity","dispatch","openWebSocket","attachEvent","loadIdentity","frameworkId","EcConceptScheme","canViewCommentsCurrentFramework","canAddCommentsCurrentFramework","EcFramework","directoryId","action","createNew","frameworksPage","collections","parent","oHead","getElementsByTagName","arrStyleSheets","tagName","toLowerCase","attributes","inherit","appendChild","cloneNode","importParentStyles","css","ss","createElement","rel","href","types","_loop","_types","schemata","undefined","indexOf","index","substring","pathname","getExpectingObject","expanded","jsonld","expand","getExpectingString","EcPk","onSidebarEvent","findLinkedPersonPersonSearchSuccess","findLinkedPersonPersonSearchFailure","ecRemoteLda","matchingPersonRecordFound","ecrld","ep","getGuid","equals","fingerprint","addGroupIdentities","searchRepositoryForGroupsSuccess","ecoa","linkedPersonShortId","shortId","eco","employee","addGroupIdentity","searchRepositoryForGroupsFailure","EcOrganization","_addGroupIdentity","_callee3","group","groupPpkSet","gPpk","grpIdent","_callee3$","_context3","getOrgKeys","addIdentityQuietly","dir","generateId","addOwner","Date","toISOString","save","$nextTick","currentRoute","selectedIds","selected","competencies","highlightCompetency","select","connection","webSocketOverride","WebSocket","onopen","onerror","error","onclose","evt","_ref3","_callee4","wut","com","_callee4$","_context4","getAssertionDate","ConceptScheme","isA","getFullType","setDefaultLanguage","spitEvent","t2","t3","Concept","EcConcept","t4","t5","EcCompetency","t6","t7","EcLevel","t8","t9","_x4","onmessage","cache","EcRemoteLinkedData","trimVersionFromUrl","veryShortId","EcCrypto","md5","precache","_createNewFramework","_callee5","optionalDirectory","saveFramework","_callee5$","_context5","newObjectEndpoint","generateShortId","owner","reader","toEncryptedValue","saveTo","_x5","_createNewCollection","_callee6","_callee6$","_context6","subType","_createNewConceptScheme","_callee7","_callee7$","_context7","_createNewProgressionModel","_callee8","_callee8$","_context8","identity","EcPpk","generateKeyAsync","p1","onIdentityChanged","saveIdentities","inIframe","fun","postMessage","_messageListener","_callee9","d","v","link","fid","guid","_callee9$","_context9","template","removeNewlines","competency","conceptScheme","concept","encryptOnSaveMap","schema","shouldTryUrl","format","_x6","entity","toPem","attachUrlProperties","_attachUrlProperties","_callee10","thing","_callee10$","_context10","_x7","copyOrLink","choice","copyCompetencies","appendCompetencies","_copyCompetencies","_callee11","copyDict","j","child","_callee11$","_context11","addReader","Task","asyncImmediate","addCompetency","afterCopy","addLevel","EcAlignment","addRelation","Relation","NARROWS","_x8","_afterCopy","_callee12","_callee12$","_context12","_appendCompetencies","_callee14","newLink","_callee14$","_context14","_callee13","_callee13$","_context13","_x9","_x10","parentStyleSheets","styleSheets","cssString","cssRules","ownerNode","countJ","cssText","innerHTML","ex","self","top","_objectSpread","isLoggedIn","loggedInPerson","currentPathIsLogin","mapState","mounted","navigationTo","isSavingProperty","isSavingThing","isAddingProperty","addingProperty","addingValues","addingRange","addingChecked","removeAddingValueAtIndex","schemataLookup","rawSchemata","schemaFallback","objectModel","competencySearchModalOpen","numPropertyComponentsVisible","searchType","includeRelations","scheme","domainType","om","setIsSavingProperty","setIsSavingThing","setIsAddingProperty","setAddingProperty","setAddingValues","newValues","forEach","newValue","trimUrl","addToAddingValues","setAddingRange","setAddingChecked","setSchemata","setSchemataLookup","setEmptySchemataLookup","setObjectModel","incrementNumPropertyComponents","thingId","decrementNumPropertyComponents","trimmed","slice","documentLoader","xmlhttp","originalUrl","ending","contextUrl","documentUrl","XMLHttpRequest","onreadystatechange","readyState","responseText","lastIndexOf","open","setRequestHeader","send","conceptCtids","conceptRegistryUrls","ctids","getCTID","registryURLs","ceasnRegistryUriTransform","item","isAdmin","adminKeys","userIds","userId","userKey","adminKey","getConceptCtids","_getConceptCtids","subCtids","ary","getConceptRegistryUrls","_getConceptRegistryUrls","subURLs","page","Thing","getDisplayStringFrom","compName","selectedFramework","selectedFrameworkObject","toJson","selectedCompetencyObject","selectedFrameworkName","selectedCompetencyName","visiblePage","selectedFrameworkCtid","matches","selectedCompetencyCtid","navigator","language","userLanguage","xhr","httpStatus","xhrx","onload","timeout","httpGet","resolveNameFromUrl","langs","conditionalDelete","depth","deleteRegistered","selectButton","_selectButton","selectedArray","relation","currentFramework","_success","selectVerbose","selectExport","selectRelations","_addLevel","optionalLevelUrlOrName","initialLevels","operation","fieldChanged","initialValue","changedValue","saveCheckedLevels","_saveCheckedLevels","checkedOptions","allOptions","competencyId","frameworkChanged","initialComp","levelChanged","_levelChanged","_each","_saveFramework","removeLevelFromFramework","_removeLevelFromFramework","levelId","removeLevel","addRelationsToFramework","_addRelationsToFramework","property","addAlignments","_x11","_x12","_x13","_addAlignments","allowSave","urlProperties","addConceptAlignments","addRelationAsCompetencyField","_ref5","initialRelations","dosedo","isNew","idx","res","rej","_x18","_x19","_x14","_x15","_x16","_x17","_addRelationAsCompetencyField","_callee16","_this2","_callee16$","_context16","_ref6","_callee15","_callee15$","_context15","_x24","_x25","_x20","_x21","_x22","_x23","removeRelationFromFramework","_removeRelationFromFramework","_callee18","_this3","_callee18$","_context18","removeRelation","_callee17","_callee17$","_context17","_x26","_x27","_x28","uri","endpoint","ctid","uuid","lop","toPrettyDateString","dateInMilliseconds","dateFormat"],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA,4CAA4C,gjBAAgjB,6BAA6B,m5DAAm5D;QAC5gF;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA,2BAA2B,gjBAAgjB,6BAA6B,m5DAAm5D;QAC3/E;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1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","file":"js/app.8edea742.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\",\"concepts\":\"concepts\",\"organizations\":\"organizations\",\"directory\":\"directory\",\"crosswalk\":\"crosswalk\",\"import\":\"import\",\"organization\":\"organization\",\"framework\":\"framework\",\"conceptScheme\":\"conceptScheme\",\"progressionModel\":\"progressionModel\",\"configurationEditor\":\"configurationEditor\",\"forbidden\":\"forbidden\",\"internalError\":\"internalError\",\"login\":\"login\",\"pluginContainer\":\"pluginContainer\",\"pluginManager\":\"pluginManager\",\"sidenav\":\"sidenav\",\"timeline\":\"timeline\",\"topbar\":\"topbar\",\"userGroupEditor\":\"userGroupEditor\",\"welcome\":\"welcome\"}[chunkId]||chunkId) + \".\" + {\"about\":\"ce88494c\",\"chunk-08264f73\":\"48a0f212\",\"chunk-0e513d16\":\"4d386889\",\"chunk-22f5d1ea\":\"d2e29ef4\",\"chunk-28a7ff35\":\"8dad3d2d\",\"chunk-2d0a4fe9\":\"2d9d3b68\",\"chunk-2d0d5fe2\":\"c23b5ea1\",\"chunk-576b8942\":\"1fd0ba48\",\"chunk-2d22bdc1\":\"15cc543d\",\"concepts\":\"6c8c824e\",\"organizations\":\"b6e8c311\",\"directory\":\"386d576a\",\"chunk-6a6fd63e\":\"f58ffc5b\",\"chunk-19b164da\":\"255ec70f\",\"chunk-20a58e6e\":\"a896c8e8\",\"chunk-6f4ecce2\":\"7af8124c\",\"crosswalk\":\"e5b1b5a6\",\"import\":\"5816fd4f\",\"organization\":\"7e81cba5\",\"chunk-2d21ecda\":\"9a480e8e\",\"framework\":\"f5756d9a\",\"conceptScheme\":\"b37b17cd\",\"progressionModel\":\"a3cf99c0\",\"chunk-32471621\":\"d8044aa6\",\"chunk-36a8ba44\":\"fd190468\",\"chunk-3c39b703\":\"8a3e6ca5\",\"chunk-43880ac8\":\"e6388a80\",\"chunk-4a268576\":\"bc8e0cae\",\"chunk-51c654a1\":\"a972a7d0\",\"chunk-61b7344a\":\"8076901f\",\"chunk-2d0b2ce8\":\"41b4ffb3\",\"configurationEditor\":\"070eb19d\",\"chunk-661fb5db\":\"7aa69358\",\"chunk-693a040c\":\"1fb1a8bc\",\"chunk-6e63f303\":\"90738da3\",\"chunk-719eeaef\":\"19b4158b\",\"chunk-789a5742\":\"ef86967f\",\"chunk-af56af32\":\"fa29d992\",\"chunk-b37cb348\":\"3dd92583\",\"chunk-b787821e\":\"a99e6e5e\",\"chunk-db457718\":\"9f6156aa\",\"chunk-de13755a\":\"f4014b9a\",\"forbidden\":\"a2903dab\",\"internalError\":\"9fbf136c\",\"login\":\"e8ce8d0d\",\"pluginContainer\":\"d2515e2c\",\"pluginManager\":\"9df61991\",\"sidenav\":\"17ea0ac7\",\"timeline\":\"f65ac329\",\"topbar\":\"a7be248e\",\"userGroupEditor\":\"a3596233\",\"welcome\":\"f44bade4\",\"chunk-05c5f49a\":\"ba02a67b\",\"chunk-25a2af2a\":\"f2d08b9f\",\"chunk-2d0cbec1\":\"38da7d9f\",\"chunk-762e84e9\":\"1b983961\",\"chunk-dc2b4b7e\":\"ae362b5e\",\"chunk-4f51c21e\":\"d0ea6ed0\",\"chunk-74a95bb3\":\"7742bf01\",\"chunk-4a5f46a6\":\"cb0fd2a0\",\"chunk-4cf587c0\":\"4fe64b26\",\"chunk-0e6d8a6f\":\"00a54992\",\"chunk-6b291276\":\"14f7fda8\",\"chunk-4f4121a7\":\"d5d5e6c3\",\"chunk-2d0ddf90\":\"790a667f\",\"chunk-2d0dab46\":\"23fb2f77\",\"chunk-c5459254\":\"c3477103\",\"chunk-57b7a046\":\"8b1beb87\",\"chunk-4f8e6938\":\"6fa8d825\",\"chunk-9dddac98\":\"e59e7af5\",\"chunk-2d0daac9\":\"f40720b8\",\"chunk-2d21eb37\":\"a4d2fe84\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-08264f73\":1,\"chunk-0e513d16\":1,\"chunk-22f5d1ea\":1,\"chunk-28a7ff35\":1,\"chunk-576b8942\":1,\"concepts\":1,\"organizations\":1,\"directory\":1,\"chunk-6a6fd63e\":1,\"chunk-19b164da\":1,\"chunk-20a58e6e\":1,\"chunk-6f4ecce2\":1,\"crosswalk\":1,\"import\":1,\"organization\":1,\"framework\":1,\"conceptScheme\":1,\"progressionModel\":1,\"chunk-32471621\":1,\"chunk-36a8ba44\":1,\"chunk-3c39b703\":1,\"chunk-43880ac8\":1,\"chunk-4a268576\":1,\"chunk-51c654a1\":1,\"chunk-61b7344a\":1,\"configurationEditor\":1,\"chunk-661fb5db\":1,\"chunk-693a040c\":1,\"chunk-6e63f303\":1,\"chunk-719eeaef\":1,\"chunk-789a5742\":1,\"chunk-af56af32\":1,\"chunk-b37cb348\":1,\"chunk-b787821e\":1,\"chunk-db457718\":1,\"chunk-de13755a\":1,\"forbidden\":1,\"internalError\":1,\"login\":1,\"pluginContainer\":1,\"pluginManager\":1,\"sidenav\":1,\"timeline\":1,\"userGroupEditor\":1,\"chunk-05c5f49a\":1,\"chunk-25a2af2a\":1,\"chunk-762e84e9\":1,\"chunk-dc2b4b7e\":1,\"chunk-4f51c21e\":1,\"chunk-4cf587c0\":1,\"chunk-0e6d8a6f\":1,\"chunk-4f4121a7\":1,\"chunk-c5459254\":1,\"chunk-57b7a046\":1,\"chunk-4f8e6938\":1,\"chunk-9dddac98\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"about\":\"about\",\"concepts\":\"concepts\",\"organizations\":\"organizations\",\"directory\":\"directory\",\"crosswalk\":\"crosswalk\",\"import\":\"import\",\"organization\":\"organization\",\"framework\":\"framework\",\"conceptScheme\":\"conceptScheme\",\"progressionModel\":\"progressionModel\",\"configurationEditor\":\"configurationEditor\",\"forbidden\":\"forbidden\",\"internalError\":\"internalError\",\"login\":\"login\",\"pluginContainer\":\"pluginContainer\",\"pluginManager\":\"pluginManager\",\"sidenav\":\"sidenav\",\"timeline\":\"timeline\",\"topbar\":\"topbar\",\"userGroupEditor\":\"userGroupEditor\",\"welcome\":\"welcome\"}[chunkId]||chunkId) + \".\" + {\"about\":\"31d6cfe0\",\"chunk-08264f73\":\"60471a70\",\"chunk-0e513d16\":\"6fe35a3d\",\"chunk-22f5d1ea\":\"60471a70\",\"chunk-28a7ff35\":\"60471a70\",\"chunk-2d0a4fe9\":\"31d6cfe0\",\"chunk-2d0d5fe2\":\"31d6cfe0\",\"chunk-576b8942\":\"cebd8586\",\"chunk-2d22bdc1\":\"31d6cfe0\",\"concepts\":\"63711a5c\",\"organizations\":\"1d9c1cec\",\"directory\":\"03b7840c\",\"chunk-6a6fd63e\":\"d8e69eab\",\"chunk-19b164da\":\"235fd082\",\"chunk-20a58e6e\":\"4e4b1ad0\",\"chunk-6f4ecce2\":\"c2caed3c\",\"crosswalk\":\"b12a891a\",\"import\":\"6e874160\",\"organization\":\"2f85a467\",\"chunk-2d21ecda\":\"31d6cfe0\",\"framework\":\"68516d6d\",\"conceptScheme\":\"75a8af1c\",\"progressionModel\":\"75a8af1c\",\"chunk-32471621\":\"60471a70\",\"chunk-36a8ba44\":\"60471a70\",\"chunk-3c39b703\":\"60471a70\",\"chunk-43880ac8\":\"60471a70\",\"chunk-4a268576\":\"60471a70\",\"chunk-51c654a1\":\"daa4e784\",\"chunk-61b7344a\":\"d0a47e88\",\"chunk-2d0b2ce8\":\"31d6cfe0\",\"configurationEditor\":\"aa42073b\",\"chunk-661fb5db\":\"60471a70\",\"chunk-693a040c\":\"60471a70\",\"chunk-6e63f303\":\"60471a70\",\"chunk-719eeaef\":\"369d5d3a\",\"chunk-789a5742\":\"60471a70\",\"chunk-af56af32\":\"60471a70\",\"chunk-b37cb348\":\"73ccae3d\",\"chunk-b787821e\":\"60471a70\",\"chunk-db457718\":\"60471a70\",\"chunk-de13755a\":\"73ccae3d\",\"forbidden\":\"1b0a0109\",\"internalError\":\"7f0e233f\",\"login\":\"be292f08\",\"pluginContainer\":\"ae42be31\",\"pluginManager\":\"7dbcc073\",\"sidenav\":\"e0b4a456\",\"timeline\":\"4070750e\",\"topbar\":\"31d6cfe0\",\"userGroupEditor\":\"83fefc67\",\"welcome\":\"31d6cfe0\",\"chunk-05c5f49a\":\"a2bf2d06\",\"chunk-25a2af2a\":\"60471a70\",\"chunk-2d0cbec1\":\"31d6cfe0\",\"chunk-762e84e9\":\"0b1a74d3\",\"chunk-dc2b4b7e\":\"60471a70\",\"chunk-4f51c21e\":\"a478a2a2\",\"chunk-74a95bb3\":\"31d6cfe0\",\"chunk-4a5f46a6\":\"31d6cfe0\",\"chunk-4cf587c0\":\"c8484769\",\"chunk-0e6d8a6f\":\"cc85466d\",\"chunk-6b291276\":\"31d6cfe0\",\"chunk-4f4121a7\":\"dfa2d379\",\"chunk-2d0ddf90\":\"31d6cfe0\",\"chunk-2d0dab46\":\"31d6cfe0\",\"chunk-c5459254\":\"6bbc8dd3\",\"chunk-57b7a046\":\"39963b5a\",\"chunk-4f8e6938\":\"c8484769\",\"chunk-9dddac98\":\"c8484769\",\"chunk-2d0daac9\":\"31d6cfe0\",\"chunk-2d21eb37\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([1,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c(_vm.dynamicModal,{tag:\"Component\",attrs:{\"title\":_vm.title,\"view\":\"modal\",\"content\":_vm.dynamicModalContent},on:{\"create-directory\":function($event){return _vm.$emit('create-directory', $event)},\"create-another-directory\":function($event){return _vm.$emit('create-another-directory', $event)},\"close\":function($event){return _vm.$emit('app/closeModal')},\"cancel\":function($event){return _vm.$emit('app/closeModal')}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicModal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DynamicModal.vue?vue&type=template&id=704681ec\"\nimport script from \"./DynamicModal.vue?vue&type=script&lang=js\"\nexport * from \"./DynamicModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./DynamicModal.vue?vue&type=style&index=0&id=704681ec&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.editorClass,attrs:{\"id\":\"app\"}},[(_vm.bannerMessage)?_c('div',{staticClass:\"banner\",style:(_vm.bannerStyle)},[_c('span',[_vm._v(_vm._s(_vm.bannerMessage))])]):_vm._e(),_c('DynamicModal',{on:{\"create-directory\":_vm.saveDirectory,\"create-another-directory\":_vm.saveDirectoryAndAddAnother}}),_c('router-view',{class:[{ 'clear-side-bar': _vm.showSideNav}, { 'clear-narrow-side-bar': !_vm.showSideNav}, {'clear-right-aside': _vm.showRightAside}],on:{\"create-new-framework\":_vm.createNewFramework,\"create-new-concept-scheme\":_vm.createNewConceptScheme,\"create-new-progression-model\":_vm.createNewProgressionModel,\"create-new-collection\":_vm.createNewCollection}}),_c('router-view',{attrs:{\"showSideNav\":_vm.showSideNav,\"name\":\"sidebar\"},on:{\"create-new-framework\":_vm.createNewFramework,\"create-new-concept-scheme\":_vm.createNewConceptScheme,\"create-new-progression-model\":_vm.createNewProgressionModel,\"create-new-collection\":_vm.createNewCollection}}),_c('vue-progress-bar'),(_vm.bannerMessage)?_c('div',{staticClass:\"banner banner-bot\",style:(_vm.bannerStyle)},[_c('span',[_vm._v(_vm._s(_vm.bannerMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=201f034a\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=201f034a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* (ignored) */","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=201f034a&prod&lang=scss\"","import Vue from 'vue';\nimport Router from 'vue-router';\n\n\nVue.use(Router);\nexport default new Router({\n base: process.env.BASE_URL,\n scrollBehavior(to, from, savedPosition) {\n if (to.hash) {\n return {\n selector: to.hash,\n offset: {x: 0, y: -100}\n };\n }\n },\n routes: [\n {\n path: '/',\n name: 'welcome',\n components: {\n default: () => import(/* webpackChunkName: \"welcome\" */ './views/Welcome.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n },\n alias: '/cass-editor/'\n },\n {\n path: '/frameworks',\n name: 'frameworks',\n components: {\n default: () => import(/* webpackChunkName: \"frameworks\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/collections',\n name: 'collections',\n components: {\n default: () => import(/* webpackChunkName: \"frameworks\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/concepts',\n name: 'concepts',\n components: {\n default: () => import(/* webpackChunkName: \"concepts\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/progressionLevels',\n name: 'progressionLevels',\n components: {\n default: () => import(/* webpackChunkName: \"progressionLevels\" */ './views/framework/Frameworks.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/login',\n name: 'login',\n component: () => import(/* webpackChunkName: \"login\" */ './views/login/Login.vue')\n },\n {\n path: '/legacyLogin',\n name: 'legacyLogin',\n component: () => import(/* webpackChunkName: \"login\" */ './views/login/LegacyLogin.vue')\n },\n {\n path: '/createAccount',\n name: 'createAccount',\n component: () => import(/* webpackChunkName: \"login\" */ './views/login/CreateAccount.vue')\n },\n {\n path: '/configuration',\n name: 'configuration',\n components: {\n default: () => import(/* webpackChunkName: \"configurationEditor\" */ './views/ConfigurationEditor'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/users',\n name: 'users',\n components: {\n default: () => import(/* webpackChunkName: \"userGroupEditor\" */ './views/usersGroups/UserGroupEditor'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n // {\n // path: '/users-and-groups',\n // name: 'users-and-groups',\n // components: {\n // default: () => import('./views/usersGroups/UsersAndGroups.vue'),\n // sidebar: () => import('./components/SideNav.vue'),\n // topbar: () => import('./components/Topbar.vue')\n // }\n // },\n {\n path: '/pluginManager',\n name: 'pluginManager',\n components: {\n default: () => import(/* webpackChunkName: \"pluginManager\" */ './views/plugins/PluginManager'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/crosswalk',\n name: 'crosswalk',\n components: {\n default: () => import(/* webpackChunkName: \"crosswalk\" */ './views/framework/Crosswalk'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/timeline',\n name: 'timeline',\n components: {\n default: () => import(/* webpackChunkName: \"timeline\" */ './views/framework/Timeline'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/about',\n name: 'about',\n components: {\n default: () => import(/* webpackChunkName: \"about\" */ './views/About.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/framework',\n name: 'framework',\n components: {\n default: () => import(/* webpackChunkName: \"framework\" */ './views/framework/Framework.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/import',\n name: 'import',\n components: {\n default: () => import(/* webpackChunkName: \"import\" */ './views/framework/Import.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/organizations',\n name: 'organizations',\n components: {\n default: () => import(/* webpackChunkName: \"organizations\" */ './views/organization/Organizations.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/organization',\n name: 'organization',\n components: {\n default: () => import(/* webpackChunkName: \"organization\" */ './views/organization/Organization.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/pluginContainer',\n name: 'pluginContainer',\n components: {\n default: () => import(/* webpackChunkName: \"pluginContainer\" */ './views/plugins/PluginContainer.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/conceptScheme',\n name: 'conceptScheme',\n components: {\n default: () => import(/* webpackChunkName: \"conceptScheme\" */ './views/conceptScheme/ConceptScheme.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/progressionModel',\n name: 'progressionModel',\n components: {\n default: () => import(/* webpackChunkName: \"progressionModel\" */ './views/progressionModel/ProgressionModel.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n },\n {\n path: '/403',\n name: 'Forbidden',\n component: () => import(/* webpackChunkName: \"forbidden\" */ './views/Forbidden.vue')\n },\n {\n path: '/500',\n name: 'InternalError',\n component: () => import(/* webpackChunkName: \"internalError\" */ './views/InternalError.vue')\n },\n {\n path: '/directory',\n name: 'directory',\n components: {\n default: () => import(/* webpackChunkName: \"directory\" */ './views/directory/Directory.vue'),\n sidebar: () => import(/* webpackChunkName: \"sidenav\" */ './components/SideNav.vue'),\n topbar: () => import(/* webpackChunkName: \"topbar\" */ './components/Topbar.vue')\n }\n }\n ]\n});\n","import Vue from 'vue';\nimport Vuex from 'vuex';\n\nVue.use(Vuex);\n\nconst state = {\n framework: null,\n organization: null,\n selectedCompetency: null,\n queryParams: {},\n defaultLanguage: null,\n webSocketBackoff: 100,\n selectCompetencyRelation: null,\n selectingCompetencies: false,\n private: false,\n newCompetency: null,\n newFramework: null,\n t3Profile: false,\n changedObject: null,\n configuration: null,\n commonPathIframe: '',\n iframeCompetencyPathInterframework: '',\n iframeConceptPath: '',\n addCommentAboutId: '',\n addCommentType: '',\n commentToEdit: {},\n commentToReply: {},\n frameworkCommentDataLoaded: false,\n frameworkCommentList: [],\n frameworkCommentPersonMap: {},\n commentsToDelete: [],\n commentScrollTo: {},\n editsToUndo: [],\n lastEditToUndo: null,\n recomputeHierarchy: false,\n recomputePrecedence: false,\n recomputePrecedenceAfterReorder: false,\n selectedCompetenciesAsProperties: null,\n refreshLevels: false,\n refreshAlignments: false,\n refreshProperties: false,\n conceptMode: false,\n collectionMode: false,\n progressionMode: false,\n cutId: null,\n copyId: null,\n paste: false,\n cutOrCopyContainerId: null,\n nodeInFocus: null,\n relations: {},\n setPropertyLevel: null,\n addAnother: false,\n itemToDelete: {},\n itemToRemove: {},\n itemToExport: {},\n manageAssertions: false,\n assertions: [],\n badgePk: null,\n me: null,\n subject: null,\n people: [],\n firstSearchProcessing: true,\n searchingAssertions: false\n};\nconst mutations = {\n framework(state, f) {\n state.framework = f;\n },\n organization(state, f) {\n state.organization = f;\n },\n selectedCompetency(state, comp) {\n state.selectedCompetency = comp;\n },\n queryParams(state, params) {\n state.queryParams = params;\n },\n defaultLanguage(state, lang) {\n state.defaultLanguage = lang;\n },\n webSocketBackoffIncrease(state) {\n state.webSocketBackoff *= 2;\n },\n private(state, bool) {\n state.private = bool;\n },\n selectCompetencyRelation(state, r) {\n state.selectCompetencyRelation = r;\n },\n selectingCompetencies(state, bool) {\n state.selectingCompetencies = bool;\n },\n newCompetency(state, id) {\n state.newCompetency = id;\n },\n newFramework(state, id) {\n state.newFramework = id;\n },\n t3Profile(state, bool) {\n state.t3Profile = bool;\n },\n changedObject(state, id) {\n state.changedObject = id;\n },\n configuration(state, config) {\n state.configuration = config;\n },\n commonPathIframe(state, val) {\n state.commonPathIframe = val;\n },\n iframeCompetencyPathInterframework(state, val) {\n state.iframeCompetencyPathInterframework = val;\n },\n iframeConceptPath(state, val) {\n state.iframeConceptPath = val;\n },\n setAddCommentAboutId(state, val) {\n state.addCommentAboutId = val;\n },\n setAddCommentType(state, val) {\n state.addCommentType = val;\n },\n setCommentToEdit(state, val) {\n state.commentToEdit = val;\n },\n setCommentToReply(state, val) {\n state.commentToReply = val;\n },\n setCommentsToDelete(state, val) {\n state.commentsToDelete = val;\n },\n clearFrameworkCommentData(state) {\n state.frameworkCommentDataLoaded = false;\n state.frameworkCommentList = [];\n state.frameworkCommentPersonMap = {};\n },\n setFrameworkCommentDataLoaded(state, val) {\n state.frameworkCommentDataLoaded = val;\n },\n setFrameworkCommentList(state, val) {\n state.frameworkCommentList = val;\n },\n setFrameworkCommentPersonMap(state, val) {\n state.frameworkCommentPersonMap = val;\n },\n setCommentScrollTo(state, val) {\n state.commentScrollTo = val;\n },\n addEditsToUndo(state, edits) {\n state.editsToUndo.push(edits);\n },\n setLastEditToUndo(state, edit) {\n state.lastEditToUndo = edit;\n },\n recomputeHierarchy(state, boolean) {\n state.recomputeHierarchy = boolean;\n },\n recomputePrecedence(state, boolean) {\n state.recomputePrecedence = boolean;\n },\n recomputePrecedenceAfterReorder(state, boolean) {\n state.recomputePrecedenceAfterReorder = boolean;\n },\n selectedCompetenciesAsProperties(state, comps) {\n state.selectedCompetenciesAsProperties = comps;\n },\n refreshLevels(state, boolean) {\n state.refreshLevels = boolean;\n },\n refreshAlignments(state, boolean) {\n state.refreshAlignments = boolean;\n },\n refreshProperties(state, boolean) {\n state.refreshProperties = boolean;\n },\n conceptMode(state, boolean) {\n if (boolean) {\n state.conceptMode = true;\n state.progressionMode = false;\n } else {\n state.conceptMode = false;\n }\n },\n collectionMode(state, boolean) {\n state.collectionMode = boolean;\n },\n progressionMode(state, boolean) {\n if (boolean) {\n state.progressionMode = true;\n state.conceptMode = false;\n } else {\n state.progressionMode = false;\n }\n },\n cutId(state, id) {\n state.cutId = id;\n },\n copyId(state, id) {\n state.copyId = id;\n },\n paste(state, id) {\n state.paste = id;\n },\n cutOrCopyContainerId(state, id) {\n state.cutOrCopyContainerId = id;\n },\n nodeInFocus(state, id) {\n state.nodeInFocus = id;\n },\n relations(state, obj) {\n state.relations = obj;\n },\n setPropertyLevel(state, level) {\n state.setPropertyLevel = level;\n },\n addAnother(state, bool) {\n state.addAnother = bool;\n },\n setItemToDelete(state, val) {\n state.itemToDelete = val;\n },\n setItemToRemove(state, val) {\n state.itemToRemove = val;\n },\n setItemToExport(state, val) {\n state.itemToExport = val;\n },\n setManageAssertions(state, val) {\n state.manageAssertions = val;\n },\n setAssertions(state, val) {\n state.assertions = val;\n },\n removeAssertion(state, val) {\n EcArray.setRemove(state.assertions, val);\n },\n removeAssertionAtIndex(state, val) {\n state.assertions.splice(val, 1);\n },\n addAssertion(state, val) {\n EcArray.setAdd(state.assertions, val);\n },\n setBadgePk(state, val) {\n state.badgePk = val;\n },\n setMe(state, val) {\n state.me = val;\n },\n setSubject(state, val) {\n state.subject = val;\n },\n setPeople(state, val) {\n state.people = val;\n },\n setFirstSearchProcessing(state, val) {\n state.firstSearchProcessing = val;\n },\n setSearchingAssertions(state, val) {\n state.searchingAssertions = val;\n }\n};\nconst actions = {\n getDirectoryChildren: function(instance, directory) {\n let children = [];\n if (directory.frameworks) {\n children.push(...directory.frameworks);\n }\n if (directory.resources) {\n children.push(...directory.resources);\n }\n if (directory.directories) {\n children.push(...directory.directories);\n }\n return children;\n },\n lastEditToUndo: function(context) {\n context.commit('setLastEditToUndo', context.state.editsToUndo.pop());\n return context.state.lastEditToUndo;\n },\n getThing: (instance, payload) => {\n return new Promise((resolve, reject) => {\n var url = EcRemote.urlAppend(payload.server, payload.service);\n url = EcRemote.upgradeHttpToHttps(url);\n fetch(url, {\n headers: payload.headers\n }).then((resp) => {\n if (payload.success) {\n payload.success(resp.data);\n }\n resolve(resp.data);\n }).catch((err) => {\n if (payload.failure) {\n payload.failure(err);\n }\n reject(err);\n });\n });\n },\n searchForAssertions: (instance) => {\n return new Promise((resolve, reject) => {\n instance.state.searchingAssertions = true;\n var assertions = [];\n let doSearch = async function(start, count) {\n return new Promise((resolve, reject) => {\n EcAssertion.search(window.repo, \"\\\"\" + instance.state.me + \"\\\"\", async(results) => {\n assertions.push(...results);\n start += count;\n if (results.length > 0) {\n await doSearch(start, count);\n }\n resolve();\n }, reject, {size: count, start: start});\n });\n };\n\n doSearch(0, 5000).then(() => {\n var eah = new EcAsyncHelper();\n eah.each(assertions, (assertion, callback) => {\n if (assertion.assertionDateDecrypted != null) {\n callback();\n } else {\n assertion.getAssertionDateAsync((date) => {\n assertion.assertionDateDecrypted = date;\n callback();\n }, callback);\n }\n },\n (assertions) => {\n instance.state.assertions = assertions;\n instance.state.searchingAssertions = false;\n resolve();\n });\n }).catch(appError);\n });\n },\n computeBecause: (instance, evidences) => {\n return new Promise((resolve, reject) => {\n var explanations = [];\n new EcAsyncHelper().each(evidences, (e, callback) => {\n var evidenceString = \"\";\n var eoriginal = e;\n if (e.startsWith != null && e.startsWith(\"{\")) {\n e = JSON.parse(e);\n }\n if (EcObject.isObject(e)) {\n if (e.verb != null) {\n if (e.verb.display != null) {\n if (e.verb.display.en != null) {\n evidenceString += e.verb.display.en + \" \";\n }\n }\n }\n if (e.object != null) {\n if (e.object.definition != null) {\n if (e.object.definition.type === \"http://adlnet.gov/expapi/activities/assessment\") {\n evidenceString += \"\\\"\" + e.object.definition.name.en + \"\\\" quiz with a \";\n if (e.result != null) {\n if (e.result.success != null) {\n evidenceString += e.result.success ? \" passing \" : \" not passing \";\n evidenceString += Math.round(e.result.score.scaled * 100.0) + \"%\";\n }\n }\n }\n }\n }\n if (e.object != null) {\n if (e.object.definition != null) {\n if (e.object.definition.interactionType != null) {\n evidenceString += \"\\\"\" + e.object.definition.name.en + \"\\\" \";\n if (e.result != null) {\n if (e.result.success != null) {\n evidenceString += e.result.success ? \" correctly\" : \" incorrectly\";\n }\n }\n }\n }\n }\n if (evidenceString !== \"\") {\n explanations.push({text: evidenceString, original: eoriginal});\n }\n callback();\n } else if (e.startsWith != null && e.startsWith(\"http\")) {\n let failureFunc = function() {\n explanations.push({\n text: \"did this\",\n url: e,\n original: eoriginal\n });\n };\n EcRepository.get(e, (success) => {\n try {\n if (success.isAny(new ChooseAction().getTypes())) {\n EcRepository.get(success.object, (creativeWork) => {\n explanations.push({\n text: \"viewed \" + creativeWork.name,\n url: creativeWork.url,\n original: eoriginal\n });\n callback();\n }, callback);\n } else {\n failureFunc();\n callback();\n }\n } catch (e) {\n failureFunc();\n callback();\n }\n }, (failure) => {\n failureFunc();\n callback();\n });\n } else {\n explanations.push({text: \"\\\"\" + e + \"\\\"\", original: eoriginal});\n callback();\n }\n }, (evidences) => {\n resolve(explanations);\n });\n });\n }\n};\nconst getters = {\n framework: function(state) {\n return state.framework;\n },\n organization: function(state) {\n return state.organization;\n },\n selectedCompetency: function(state) {\n return state.selectedCompetency;\n },\n queryParams: function(state) {\n return state.queryParams;\n },\n defaultLanguage: function(state) {\n return state.defaultLanguage;\n },\n webSocketBackoff: function(state) {\n return state.webSocketBackoff;\n },\n selectCompetencyRelation: function(state) {\n return state.selectCompetencyRelation;\n },\n selectingCompetencies: function(state) {\n return state.selectingCompetencies;\n },\n private: function(state) {\n return state.private;\n },\n newCompetency: function(state) {\n return state.newCompetency;\n },\n newFramework: function(state) {\n return state.newFramework;\n },\n t3Profile: function(state) {\n return state.t3Profile;\n },\n changedObject: function(state) {\n return state.changedObject;\n },\n configuration: function(state) {\n return state.configuration;\n },\n addCommentAboutId: function(state) {\n return state.addCommentAboutId;\n },\n addCommentType: function(state) {\n return state.addCommentType;\n },\n commentToEdit: function(state) {\n return state.commentToEdit;\n },\n commentToReply: function(state) {\n return state.commentToReply;\n },\n commentsToDelete: function(state) {\n return state.commentsToDelete;\n },\n frameworkCommentDataLoaded: function(state) {\n return state.frameworkCommentDataLoaded;\n },\n frameworkCommentList: function(state) {\n return state.frameworkCommentList;\n },\n frameworkCommentPersonMap: function(state) {\n return state.frameworkCommentPersonMap;\n },\n commentScrollTo: function(state) {\n return state.commentScrollTo;\n },\n recomputeHierarchy: function(state) {\n return state.recomputeHierarchy;\n },\n recomputePrecedence: function(state) {\n return state.recomputePrecedence;\n },\n recomputePrecedenceAfterReorder: function(state) {\n return state.recomputePrecedenceAfterReorder;\n },\n selectedCompetenciesAsProperties: function(state) {\n return state.selectedCompetenciesAsProperties;\n },\n refreshLevels: function(state) {\n return state.refreshLevels;\n },\n refreshAlignments: function(state) {\n return state.refreshAlignments;\n },\n refreshProperties: function(state) {\n return state.refreshProperties;\n },\n conceptMode: function(state) {\n return state.conceptMode;\n },\n collectionMode: function(state) {\n return state.collectionMode;\n },\n progressionMode: function(state) {\n return state.progressionMode;\n },\n cutId: function(state) {\n return state.cutId;\n },\n copyId: function(state) {\n return state.copyId;\n },\n paste: function(state) {\n return state.paste;\n },\n cutOrCopyContainerId: function(state) {\n return state.cutOrCopyContainerId;\n },\n nodeInFocus: function(state) {\n return state.nodeInFocus;\n },\n relations: function(state) {\n return state.relations;\n },\n setPropertyLevel: function(state) {\n return state.setPropertyLevel;\n },\n addAnother: function(state) {\n return state.addAnother;\n },\n itemToDelete: function(state) {\n return state.itemToDelete;\n },\n itemToRemove: function(state) {\n return state.itemToRemove;\n },\n itemToExport: function(state) {\n return state.itemToExport;\n },\n manageAssertions: function(state) {\n return state.manageAssertions;\n },\n assertions: function(state) {\n return state.assertions.sort((a, b) => {\n return b.assertionDateDecrypted - a.assertionDateDecrypted;\n });\n },\n badgePk: function(state) {\n return state.badgePk;\n },\n getMe: function(state) {\n return state.me;\n },\n getSubject: function(state) {\n return state.subject;\n },\n people: function(state) {\n return state.people;\n },\n firstSearchProcessing: function(state) {\n return state.firstSearchProcessing;\n },\n searchingAssertions: function(state) {\n return state.searchingAssertions;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","// This store is used to control app state for behavior\n// such as displaying certain modals\n// and transitions\n\nconst state = {\n sideNavEnabled: true,\n showSideNav: true,\n showRightAside: false,\n rightAsideContent: '',\n rightAsideObject: null,\n canViewComments: false,\n canAddComments: false,\n pluginLastUpdate: null,\n pluginToLaunch: null,\n pluginToLaunchLastUpdate: 0,\n framework: {\n showToolBar: true,\n commentsEnabled: true,\n versionsEnabled: true,\n draggingEnabled: false,\n isDragging: false,\n draggable: {}\n },\n configuration: {\n contentSection: ''\n },\n frameworks: {\n searchTerm: '',\n quickFilters: [],\n applySearchTo: [],\n sortResults: [],\n refreshSearch: false,\n searchFrameworksInCompetencySearch: false\n },\n modal: {\n framework: '',\n showModal: false,\n dynamicModalContent: {},\n objForShareModal: null\n },\n directories: {\n directoryList: [],\n selectedDirectory: null,\n searchingInDirectory: true,\n editDirectory: false\n },\n import: {\n files: [],\n transition: 'upload', // upload, process, detail, preview, light\n status: '', // success, failure, edit\n type: 'file', // pdf, server, text\n fileType: '',\n firstImport: Boolean,\n errors: [], // erorrs from the code or from the api\n feedback: '', // additional information\n duplicates: [],\n skip: [],\n framework: null,\n serverUrl: '',\n url: '',\n frameworkName: '',\n frameworkDescription: '',\n importCsv: {\n nameColumn: {},\n descriptionColumn: {},\n scopeColumn: {},\n idColumn: {},\n sourceColumn: {},\n relationColumn: {},\n targetColumn: {}\n },\n importText: '',\n csvColumns: [],\n csvRelationColumns: [],\n csvRelationFile: null,\n importModalParams: null\n },\n allowCancel: false,\n banner: {\n message: '',\n color: '',\n background: ''\n },\n motd: {\n message: '',\n title: ''\n },\n curatedPlugins: [\n {\n \"id\": \"vlrcTestPlugin3\",\n \"url\": \"https://raw.githubusercontent.com/cassproject/cass-vlrc/master/\"\n }\n ]\n};\nconst mutations = {\n showSideNav: function() {\n state.showSideNav = true;\n state.showRightAside = false;\n },\n closeSideNav: function() {\n state.showSideNav = false;\n },\n showRightAside: function(state, payload) {\n state.showRightAside = true;\n state.rightAsideContent = payload;\n // state.showSideNav = false;\n },\n closeRightAside: function(state) {\n state.showRightAside = false;\n state.rightAsideContent = '';\n state.rightAsideObject = null;\n },\n rightAsideObject: async function(state, payload) {\n if (payload.encryptedType) {\n let type = \"Ec\" + payload.encryptedType;\n let obj = new window[type]();\n obj.copyFrom(await EcEncryptedValue.fromEncryptedValue(payload));\n state.rightAsideObject = obj;\n } else {\n state.rightAsideObject = payload;\n }\n },\n showModal: function(state, payload) {\n state.modal.showModal = true;\n state.modal.dynamicModalContent = payload;\n },\n closeModal: function(state) {\n state.modal.showModal = false;\n state.modal.dynamicModalContent = {};\n },\n objForShareModal: function(state, payload) {\n state.modal.objForShareModal = payload;\n },\n draggingEnabled: function(state, value) {\n state.framework.draggingEnabled = value;\n },\n isDragging: function(state, value) {\n state.framework.isDragging = value;\n },\n draggable: function(state, value) {\n state.framework.draggable = value;\n },\n importFiles: function(state, value) {\n state.import.files = value;\n },\n setCanViewComments: function(state, value) {\n state.canViewComments = value;\n },\n setCanAddComments: function(state, value) {\n state.canAddComments = value;\n },\n clearImportFiles: function(state) {\n state.import.files = [];\n },\n pluginLastUpdate: function(state, value) {\n state.pluginLastUpdate = value;\n },\n pluginToLaunch: function(state, value) {\n state.pluginToLaunch = value;\n },\n pluginToLaunchLastUpdate: function(state, value) {\n state.pluginToLaunchLastUpdate = value;\n },\n resetImport: function(state) {\n state.import = {\n files: [],\n transition: 'upload', // upload, process, detail, preview, light\n status: '', // success, failure, edit\n type: 'file', // pdf, server, text\n fileType: '',\n firstImport: Boolean,\n errors: [], // erorrs from the code or from the api\n feedback: '', // additional information\n duplicates: [],\n skip: [],\n framework: null,\n serverUrl: '',\n url: '',\n frameworkName: '',\n frameworkDescription: '',\n importCsv: {\n nameColumn: {},\n descriptionCcolumn: {},\n scopeColumn: {},\n idColumn: {},\n sourceColumn: {},\n relationColumn: {},\n targetColumn: {}\n },\n importText: '',\n csvColumns: [],\n csvRelationColumns: [],\n csvRelationFile: null,\n importModalParams: null\n };\n },\n importTransition: function(state, value) {\n state.import.transition = value;\n },\n importFileType: function(state, value) {\n state.import.fileType = value;\n },\n importType: function(state, value) {\n state.import.type = value;\n },\n firstImport: function(state, val) {\n state.import.firstImport = val;\n },\n addImportError: function(state, val) {\n state.import.errors.push(val);\n },\n clearImportErrors: function(state) {\n state.import.errors = [];\n },\n importStatus: function(state, val) {\n state.import.status = val;\n },\n importAllowCancel: function(state, val) {\n state.allowCancel = val;\n },\n importFeedback: function(state, val) {\n state.import.feedback = val;\n },\n importDuplicates: function(state, val) {\n state.import.duplicates = val;\n },\n importSkip: function(state, val) {\n state.import.skip = val;\n },\n importFramework: function(state, val) {\n state.import.framework = val;\n },\n importFrameworkName: function(state, val) {\n state.import.frameworkName = val;\n },\n importFrameworkNameColumn: function(state, val) {\n state.import.frameworkNameColumn = val;\n },\n importFrameworkScopeColumn: function(state, val) {\n state.import.frameworkScopeColumn = val;\n },\n importFrameworkIdColumn: function(state, val) {\n state.import.frameworkIdColumn = val;\n },\n importFrameworkDescription: function(state, val) {\n state.import.frameworkDescription = val;\n },\n importText: function(state, val) {\n state.import.importText = val;\n },\n importServerUrl: function(state, val) {\n state.import.serverUrl = val;\n },\n importUrl: function(state, val) {\n state.import.url = val;\n },\n importNameColumn: function(state, val) {\n state.import.importCsv.nameColumn = val;\n },\n importDescriptionColumn: function(state, val) {\n state.import.importCsv.descriptionColumn = val;\n },\n importScopeColumn: function(state, val) {\n state.import.importCsv.scopeColumn = val;\n },\n importSourceColumn: function(state, val) {\n state.import.importCsv.sourceColumn = val;\n },\n importTargetColumn: function(state, val) {\n state.import.importCsv.targetColumn = val;\n },\n importRelationColumn: function(state, val) {\n state.import.importCsv.relationColumn = val;\n },\n importIdColumn: function(state, val) {\n state.import.importCsv.idColumn = val;\n },\n csvColumns: function(state, val) {\n state.import.csvColumns = val;\n },\n csvRelationColumns: function(state, val) {\n state.import.csvRelationColumns = val;\n },\n csvRelationFile: function(state, val) {\n state.import.csvRelationFile = val;\n },\n importModalParams: function(state, val) {\n state.import.importModalParams = val;\n },\n searchTerm: function(state, value) {\n state.frameworks.searchTerm = value;\n },\n applySearchTo: function(state, value) {\n state.frameworks.applySearchTo = value;\n },\n refreshSearch: function(state, value) {\n state.frameworks.refreshSearch = value;\n },\n sortResults: function(state, value) {\n state.frameworks.sortResults = value;\n },\n quickFilters: function(state, value) {\n state.frameworks.quickFilters = value;\n },\n singleQuickFilter: function(state, value) {\n let i = state.frameworks.quickFilters.findIndex((filter) => filter.id === value.id);\n if (i >= 0) {\n state.frameworks.quickFilters[i].checked = value.checked;\n } else {\n state.frameworks.quickFilters.push(value);\n }\n },\n clearSearchFilters: function(state) {\n let quickFilters = state.frameworks.quickFilters;\n let sortResults = state.frameworks.sortResults;\n let applySearchTo = state.frameworks.applySearchTo;\n\n for (let i = 0; i < quickFilters.length; i++) {\n quickFilters[i].checked = false;\n }\n for (let i = 0; i < sortResults.length; i++) {\n sortResults[i].checked = false;\n }\n for (let i = 0; i < applySearchTo.length; i++) {\n applySearchTo[i].checked = false;\n }\n state.frameworks.quickFilters = quickFilters;\n state.frameworks.sortResults = sortResults;\n state.frameworks.applySearchTo = applySearchTo;\n },\n selectDirectory: function(state, value) {\n state.directories.selectedDirectory = value;\n },\n directoryList: function(state, list) {\n state.directories.directoryList = list;\n },\n searchingInDirectory: function(state, bool) {\n state.directories.searchingInDirectory = bool;\n },\n editDirectory: function(state, bool) {\n state.directories.editDirectory = bool;\n },\n searchFrameworksInCompetencySearch: function(state, bool) {\n state.frameworks.searchFrameworksInCompetencySearch = bool;\n },\n setBanner: function(state, payload) {\n if (payload.message) {\n state.banner.message = payload.message;\n }\n if (payload.color) {\n state.banner.color = payload.color;\n }\n if (payload.background) {\n state.banner.background = payload.background;\n }\n },\n setMotd: function(state, payload) {\n if (payload.message) {\n state.motd.message = payload.message;\n }\n if (payload.title) {\n state.motd.title = payload.title;\n }\n },\n setCuratedPlugins: function(state, payload) {\n state.curatedPlugins = payload;\n }\n};\nconst actions = {\n clearImport: function({commit}) {\n commit('importFramework', null);\n commit('clearImportFiles');\n commit('clearImportErrors');\n commit('importTransition', 'upload');\n commit('importStatus', '');\n commit('importAllowCancel', false);\n commit('importFeedback', '');\n commit('importFileType', '');\n commit('importDuplicates', []);\n commit('importSkip', []);\n },\n refreshDirectories: function({commit}) {\n let directories = [];\n let directoryIds = [];\n let paramObj = {size: 10000};\n EcDirectory.search(window.repo, \"\", function(dirs) {\n for (let i = 0; i < dirs.length; i++) {\n if (dirs[i].canEditAny(EcIdentityManager.default.getMyPks()) && !EcArray.has(directoryIds, dirs[i].id)) {\n directories.push(dirs[i]);\n directoryIds.push(dirs[i].id);\n }\n }\n commit('directoryList', directories);\n }, appError, paramObj);\n }\n};\nconst getters = {\n canViewComments: state => {\n return state.canViewComments;\n },\n canAddComments: state => {\n return state.canAddComments;\n },\n sideNavEnabled: state => {\n return state.sideNavEnabled;\n },\n showSideNav: state => {\n return state.showSideNav;\n },\n showRightAside: state => {\n return state.showRightAside;\n },\n rightAsideContent: state => {\n return state.rightAsideContent;\n },\n rightAsideObject: state => {\n return state.rightAsideObject;\n },\n framework: state => {\n return state.framework;\n },\n showModal: state => {\n return state.modal.showModal;\n },\n dynamicModalContent: state => {\n return state.modal.dynamicModalContent;\n },\n objForShareModal: state => {\n return state.modal.objForShareModal;\n },\n draggingEnabled: state => {\n return state.modal.draggingEnabled;\n },\n isDragging: state => {\n return state.modal.isDragging;\n },\n draggable: state => {\n return state.framework.draggable;\n },\n importFiles: state => {\n return state.import.files;\n },\n importTransition: state => {\n return state.import.transition;\n },\n importFileType: state => {\n return state.import.fileType;\n },\n importType: state => {\n return state.import.type;\n },\n firstImport: state => {\n return state.import.firstImport;\n },\n importErrors: state => {\n return state.import.errors;\n },\n importStatus: state => {\n return state.import.status;\n },\n importAllowCancel: state => {\n return state.allowCancel;\n },\n importFeedback: state => {\n return state.import.feedback;\n },\n importDuplicates: state => {\n return state.import.duplicates;\n },\n importSkip: state => {\n return state.import.skip;\n },\n importFramework: state => {\n return state.import.framework;\n },\n importFrameworkName: state => {\n return state.import.frameworkName;\n },\n importFrameworkNameColumn: state => {\n return state.import.frameworkNameColumn;\n },\n importFrameworkScopeColumn: state => {\n return state.import.frameworkScopeColumn;\n },\n importFrameworkIdColumn: state => {\n return state.import.frameworkIdColumn;\n },\n importFrameworkDescription: state => {\n return state.import.frameworkDescription;\n },\n importText: state => {\n return state.import.importText;\n },\n importServerUrl: state => {\n return state.import.serverUrl;\n },\n importUrl: state => {\n return state.import.url;\n },\n importNameColumn: state => {\n return state.import.importCsv.nameColumn;\n },\n importDescriptionColumn: state => {\n return state.import.importCsv.descriptionColumn;\n },\n importScopeColumn: state => {\n return state.import.importCsv.scopeColumn;\n },\n importIdColumn: state => {\n return state.import.importCsv.idColumn;\n },\n importSourceColumn: state => {\n return state.import.importCsv.sourceColumn;\n },\n importRelationColumn: state => {\n return state.import.importCsv.relationColumn;\n },\n importTargetColumn: state => {\n return state.import.importCsv.targetColumn;\n },\n importModalParams: state => {\n return state.import.importModalParams;\n },\n searchTerm: state => {\n return state.frameworks.searchTerm;\n },\n sortResults: state => {\n return state.frameworks.sortResults;\n },\n quickFilters: state => {\n return state.frameworks.quickFilters;\n },\n filterByOwnedByMe: (state) => {\n let filter = state.frameworks.quickFilters.find((filter) => filter.id === \"ownedByMe\");\n if (!filter) {\n return false;\n }\n if (Array.isArray(filter) && filter.length > 0) {\n return filter[0].checked;\n } else {\n return filter.checked;\n }\n },\n filterByNotOwnedByMe: (state) => {\n let filter = state.frameworks.quickFilters.find((filter) => filter.id === \"notOwnedByMe\");\n if (!filter) {\n return false;\n }\n if (Array.isArray(filter) && filter.length > 0) {\n return filter[0].checked;\n } else {\n return filter.checked;\n }\n },\n filterByConfigMatchDefault: (state) => {\n let filter = state.frameworks.quickFilters.find((filter) => filter.id === \"configMatchDefault\");\n if (!filter) {\n return false;\n }\n if (Array.isArray(filter) && filter.length > 0) {\n return filter[0].checked;\n } else {\n return filter.checked;\n }\n },\n applySearchTo: state => {\n return state.frameworks.applySearchTo;\n },\n refreshSearch: state => {\n return state.frameworks.refreshSearch;\n },\n csvColumns: state => {\n return state.import.csvColumns;\n },\n csvRelationColumns: state => {\n return state.import.csvRelationColumns;\n },\n csvRelationFile: state => {\n return state.import.csvRelationFile;\n },\n pluginLastUpdate: state => {\n return state.pluginLastUpdate;\n },\n pluginToLaunch: state => {\n return state.pluginToLaunch;\n },\n pluginToLaunchLastUpdate: state => {\n return state.pluginToLaunchLastUpdate;\n },\n selectedDirectory: state => {\n return state.directories.selectedDirectory;\n },\n directoryList: state => {\n return state.directories.directoryList;\n },\n searchingInDirectory: state => {\n return state.directories.searchingInDirectory;\n },\n editDirectory: state => {\n return state.directories.editDirectory;\n },\n searchFrameworksInCompetencySearch: state => {\n return state.frameworks.searchFrameworksInCompetencySearch;\n },\n bannerMessage: state => {\n return state.banner.message;\n },\n bannerColor: state => {\n return state.banner.color;\n },\n bannerBackground: state => {\n return state.banner.background;\n },\n motdTitle: state => {\n return state.motd.title;\n },\n motdMessage: state => {\n return state.motd.message;\n },\n curatedPlugins: state => {\n return state.curatedPlugins;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n loggedOnPerson: {},\n repoInit: {\n ssoLogin: null,\n ssoLogout: null,\n ssoPublicKey: null\n },\n lastLogin: null\n};\nconst mutations = {\n loggedOnPerson(state, personObj) {\n state.loggedOnPerson = personObj;\n if (window.EcIdentityManager.default.ids.length > 0) {\n state.lastLogin = window.EcIdentityManager.default.ids[0].lastLogin;\n } else {\n state.lastLogin = null;\n }\n },\n repositorySsoOptions(state, repoInit) {\n state.repoInit.ssoLogin = repoInit.ssoLogin;\n state.repoInit.ssoLogout = repoInit.ssoLogout;\n state.repoInit.ssoPublicKey = repoInit.ssoPublicKey;\n }\n};\nconst actions = {\n\n};\nconst getters = {\n loggedOnPerson: function(state) {\n return state.loggedOnPerson;\n },\n repositorySsoOptions: function(state) {\n return state.repoInit;\n },\n lastLogin: function(state) {\n return state.lastLogin;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n step: 0,\n frameworkSource: null,\n frameworkSourceRelationships: null,\n frameworkTarget: null,\n frameworkTargetRelationships: null,\n relevantExistingAlignmentsMap: null,\n relevantExistingAlignmentsMapLastUpdate: null,\n alignedCompetenciesList: [],\n workingAlignmentsMap: {\n source: '',\n targets: [],\n initialTargets: [],\n removedTargets: [],\n changed: false,\n type: ''\n },\n alignmentsToSave: [],\n alignmentsToDelete: [],\n sourceState: 'ready',\n targetState: 'ready',\n targetNodesToHighlight: [],\n enabledRelationshipTypes: [],\n enabledRelationshipTypesLastUpdate: null\n};\n\nconst mutations = {\n enabledRelationshipTypesLastUpdate(state, f) {\n state.enabledRelationshipTypesLastUpdate = f;\n },\n enabledRelationshipTypes(state, f) {\n state.enabledRelationshipTypes = f;\n },\n targetNodesToHighlight(state, f) {\n state.targetNodesToHighlight = f;\n },\n frameworkSource(state, f) {\n state.frameworkSource = f;\n },\n frameworkTarget(state, f) {\n state.frameworkTarget = f;\n },\n frameworkSourceRelationships(state, f) {\n state.frameworkSourceRelationships = f;\n },\n frameworkTargetRelationships(state, f) {\n state.frameworkTargetRelationships = f;\n },\n relevantExistingAlignmentsMap(state, f) {\n state.relevantExistingAlignmentsMap = f;\n },\n relevantExistingAlignmentsMapLastUpdate(state, f) {\n state.relevantExistingAlignmentsMapLastUpdate = f;\n },\n alignedCompetenciesList(state, f) {\n state.alignedCompetenciesList = f;\n },\n step(state, val) {\n state.step = val;\n },\n workingAlignmentsSource(state, c) {\n state.workingAlignmentsMap.source = c;\n },\n workingAlignmentsTargets(state, c) {\n state.workingAlignmentsMap.targets = c;\n },\n workingAlignmentsType(state, a) {\n state.workingAlignmentsMap.type = a;\n },\n sourceState(state, s) {\n state.sourceState = s;\n },\n targetState(state, t) {\n state.targetState = t;\n },\n alignmentsToSave(state, t) {\n state.alignmentsToSave = t;\n },\n populateAlignedCompetenciesList(state) {\n if (state.relevantExistingAlignmentsMap) {\n let alignedCompetencies = [];\n let sourceComps = Object.keys(state.relevantExistingAlignmentsMap);\n for (let sc of sourceComps) {\n alignedCompetencies.push(sc);\n let alignTypes = Object.keys(state.relevantExistingAlignmentsMap[sc]);\n for (let scAt of alignTypes) {\n let targetIds = Object.keys(state.relevantExistingAlignmentsMap[sc][scAt]);\n for (let ti of targetIds) {\n alignedCompetencies.push(ti);\n }\n }\n }\n state.alignedCompetenciesList = alignedCompetencies;\n }\n },\n populateWorkingAlignmentMap(state) {\n if (state.relevantExistingAlignmentsMap[state.workingAlignmentsMap.source] &&\n state.relevantExistingAlignmentsMap[state.workingAlignmentsMap.source][state.workingAlignmentsMap.type]) {\n let sourceTypeAlignMap = state.relevantExistingAlignmentsMap[state.workingAlignmentsMap.source][state.workingAlignmentsMap.type];\n let targetIds = Object.keys(sourceTypeAlignMap);\n for (let ti of targetIds) {\n state.workingAlignmentsMap.targets.push(ti);\n state.workingAlignmentsMap.initialTargets.push(ti);\n }\n }\n state.workingAlignmentsMap.changed = false;\n },\n resetFrameworkSourceRelationships(state) {\n state.frameworkSourceRelationships = null;\n state.relevantExistingAlignmentsMap = null;\n },\n resetFrameworkTargetRelationships(state) {\n state.frameworkTargetRelationships = null;\n state.relevantExistingAlignmentsMap = null;\n },\n resetCrosswalkFrameworks(state) {\n state.frameworkSource = null;\n state.frameworkTarget = null;\n state.frameworkSourceRelationships = null;\n state.frameworkTargetRelationships = null;\n state.relevantExistingAlignmentsMap = null;\n },\n resetCrosswalkAlignmentsAndState(state) {\n state.workingAlignmentsMap.source = '';\n state.workingAlignmentsMap.targets = [];\n state.workingAlignmentsMap.initialTargets = [];\n state.workingAlignmentsMap.removedTargets = [];\n state.workingAlignmentsMap.changed = false;\n state.workingAlignmentsMap.type = '';\n state.sourceState = 'ready';\n state.targetState = 'ready';\n state.alignmentsToSave = [];\n state.alignmentsToDelete = [];\n },\n resetCrosswalk(state) {\n state.step = 0;\n state.workingAlignmentsMap.source = '';\n state.workingAlignmentsMap.targets = [];\n state.workingAlignmentsMap.initialTargets = [];\n state.workingAlignmentsMap.removedTargets = [];\n state.workingAlignmentsMap.changed = false;\n state.workingAlignmentsMap.type = '';\n state.sourceState = 'ready';\n state.targetState = 'ready';\n state.alignmentsToSave = [];\n state.alignmentsToDelete = [];\n },\n resetWorkingAlignmentsMap(state) {\n state.sourceState = 'ready';\n state.targetState = 'ready';\n state.workingAlignmentsMap = {\n source: '',\n targets: [],\n initialTargets: [],\n removedTargets: [],\n changed: false,\n type: ''\n };\n },\n addWorkingAlignmentsTarget(state, id) {\n let remTargets = state.workingAlignmentsMap.removedTargets;\n let filteredRemovedTargets = remTargets.filter(remTargets => remTargets !== id);\n state.workingAlignmentsMap.removedTargets = filteredRemovedTargets;\n state.workingAlignmentsMap.targets.push(id);\n if (state.workingAlignmentsMap.removedTargets.length > 0) state.workingAlignmentsMap.changed = true;\n else {\n let shouldSetToChanged = false;\n for (let t of state.workingAlignmentsMap.targets) {\n if (!state.workingAlignmentsMap.initialTargets.includes(t)) {\n shouldSetToChanged = true;\n break;\n }\n }\n if (shouldSetToChanged) state.workingAlignmentsMap.changed = true;\n else state.workingAlignmentsMap.changed = false;\n }\n },\n removeWorkingAlignmentsTarget(state, id) {\n let targets = state.workingAlignmentsMap.targets;\n let filtered = targets.filter(target => target !== id);\n state.workingAlignmentsMap.targets = filtered;\n if (state.workingAlignmentsMap.initialTargets.includes(id)) state.workingAlignmentsMap.removedTargets.push(id);\n if (state.workingAlignmentsMap.removedTargets.length > 0) state.workingAlignmentsMap.changed = true;\n else {\n let shouldSetToChanged = false;\n for (let t of state.workingAlignmentsMap.targets) {\n if (!state.workingAlignmentsMap.initialTargets.includes(t)) {\n shouldSetToChanged = true;\n break;\n }\n }\n if (shouldSetToChanged) state.workingAlignmentsMap.changed = true;\n else state.workingAlignmentsMap.changed = false;\n }\n },\n removeAlignmentFromRelevantAlignmentsMap(state, alignProps) {\n if (state.relevantExistingAlignmentsMap[alignProps.source]) {\n if (state.relevantExistingAlignmentsMap[alignProps.source][alignProps.type]) {\n if (state.relevantExistingAlignmentsMap[alignProps.source][alignProps.type][alignProps.target]) {\n let ream = state.relevantExistingAlignmentsMap;\n delete ream[alignProps.source][alignProps.type][alignProps.target];\n state.relevantExistingAlignmentsMap = ream;\n }\n }\n }\n },\n addAlignmentToRelevantAlignmentsMap(state, ecaObj) {\n let ream = state.relevantExistingAlignmentsMap;\n if (!ream[ecaObj.source]) ream[ecaObj.source] = {};\n if (!ream[ecaObj.source][ecaObj.relationType]) ream[ecaObj.source][ecaObj.relationType] = {};\n if (!ream[ecaObj.source][ecaObj.relationType][ecaObj.target]) ream[ecaObj.source][ecaObj.relationType][ecaObj.target] = ecaObj;\n state.relevantExistingAlignmentsMap = ream;\n },\n removeAlignmentFromAlignmentsToSave(state, alignProps) {\n let newAts = [];\n for (let a of state.alignmentsToSave) {\n if (!(a.source === alignProps.source && a.target === alignProps.target && a.relationType === alignProps.type)) {\n newAts.push(a);\n }\n }\n state.alignmentsToSave = newAts;\n },\n removeAlignmentFromAlignmentsToDelete(state, alignProps) {\n let newAtd = [];\n for (let a of state.alignmentsToDelete) {\n if (!(a.source === alignProps.source && a.target === alignProps.target && a.relationType === alignProps.type)) {\n newAtd.push(a);\n }\n }\n state.alignmentsToDelete = newAtd;\n },\n appendAlignmentsToDelete(state, alignment) {\n state.alignmentsToDelete.push(alignment);\n },\n appendAlignmentsToSave(state, alignment) {\n state.alignmentsToSave.push(alignment);\n }\n};\nconst actions = {\n\n};\nconst getters = {\n enabledRelationshipTypesLastUpdate: function(state) {\n return state.enabledRelationshipTypesLastUpdate;\n },\n enabledRelationshipTypes: function(state) {\n return state.enabledRelationshipTypes;\n },\n frameworkSource: function(state) {\n return state.frameworkSource;\n },\n frameworkTarget: function(state) {\n return state.frameworkTarget;\n },\n frameworkSourceRelationships: function(state) {\n return state.frameworkSourceRelationships;\n },\n frameworkTargetRelationships: function(state) {\n return state.frameworkTargetRelationships;\n },\n relevantExistingAlignmentsMap: function(state) {\n return state.relevantExistingAlignmentsMap;\n },\n relevantExistingAlignmentsMapLastUpdate: function(state) {\n return state.relevantExistingAlignmentsMapLastUpdate;\n },\n workingAlignmentsSource(state) {\n return state.workingAlignmentsMap.source;\n },\n workingAlignmentsTargets(state) {\n return state.workingAlignmentsMap.targets;\n },\n workingAlignmentsType(state, a) {\n return state.workingAlignmentsMap.type;\n },\n sourceState(state) {\n return state.sourceState;\n },\n targetState(state) {\n return state.targetState;\n },\n alignmentsToSave(state) {\n return state.alignmentsToSave;\n },\n alignmentsToDelete(state) {\n return state.alignmentsToDelete;\n },\n alignedCompetenciesList(state) {\n return state.alignedCompetenciesList;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n cassApiLocation: ''\n};\n\nconst mutations = {\n cassApiLocation(state, f) {\n state.cassApiLocation = f;\n }\n};\n\nconst actions = {\n};\n\nconst getters = {\n cassApiLocation: function(state) {\n return state.cassApiLocation;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","const state = {\n CONFIG_SEARCH_SIZE: 10000,\n DEFAULT_CONFIGURATION_TYPE: 'Configuration',\n DEFAULT_CONFIGURATION_CONTEXT: 'https://schema.cassproject.org/0.4/',\n LANG_STRING_RANGE: 'http://www.w3.org/2000/01/rdf-schema#langString',\n DEFAULT_HEADING: \"General\",\n LEVEL_SEARCH_SIZE: 10000,\n PERSON_SEARCH_SIZE: 10000,\n DEFAULT_CUSTOM_PROPERTY_CONTEXT: 'https://schema.cassproject.org/0.4/',\n DEFAULT_CUSTOM_PROPERTY_RANGE: 'http://schema.org/Text',\n defaultBrowserConfig: '',\n defaultBrowserConfigName: '',\n localDefaultBrowserConfig: '',\n configBusy: false,\n configList: [],\n configView: 'list',\n currentConfig: {},\n showConfirmDeleteConfigModal: false,\n showMustBeLoggedInModal: false,\n showBrowserConfigSetModal: false,\n configToDelete: {},\n availableConcepts: []\n};\n\nconst mutations = {\n setConfigToDelete(state, val) {\n state.configToDelete = val;\n },\n setShowMustBeLoggedInModal(state, val) {\n state.showMustBeLoggedInModal = val;\n },\n setShowBrowserConfigSetModal(state, val) {\n state.showBrowserConfigSetModal = val;\n },\n setShowConfirmDeleteConfigModal(state, val) {\n state.showConfirmDeleteConfigModal = val;\n },\n setCurrentConfig(state, val) {\n state.currentConfig = val;\n },\n setConfigView(state, val) {\n state.configView = val;\n },\n setConfigList(state, val) {\n state.setConfigList = val;\n },\n setConfigBusy(state, val) {\n state.configBusy = val;\n },\n setDefaultBrowserConfig(state, val) {\n state.defaultBrowserConfig = val;\n },\n setDefaultBrowserConfigName(state, val) {\n state.defaultBrowserConfigName = val;\n },\n setLocalDefaultBrowserConfig(state, val) {\n state.localDefaultBrowserConfig = val;\n },\n setAvailableConcepts(state, val) {\n state.availableConcepts = val;\n },\n setAvailableTypes(state, val) {\n state.availableTypes = val;\n }\n};\nconst actions = {\n\n};\nconst getters = {\n configToDelete: function(state) {\n return state.configToDelete;\n },\n showConfirmDeleteConfigModal: function(state) {\n return state.showConfirmDeleteConfigModal;\n },\n showMustBeLoggedInModal: function(state) {\n return state.showMustBeLoggedInModal;\n },\n showBrowserConfigSetModal: function(state) {\n return state.showBrowserConfigSetModal;\n },\n LEVEL_SEARCH_SIZE: function(state) {\n return state.LEVEL_SEARCH_SIZE;\n },\n GROUP_SEARCH_SIZE: function(state) {\n return state.GROUP_SEARCH_SIZE;\n },\n PERSON_SEARCH_SIZE: function(state) {\n return state.PERSON_SEARCH_SIZE;\n },\n DEFAULT_CUSTOM_PROPERTY_CONTEXT: function(state) {\n return state.DEFAULT_CUSTOM_PROPERTY_CONTEXT;\n },\n DEFAULT_CUSTOM_PROPERTY_RANGE: function(state) {\n return state.DEFAULT_CUSTOM_PROPERTY_RANGE;\n },\n DEFAULT_CONFIGURATION_TYPE: function(state) {\n return state.DEFAULT_CONFIGURATION_TYPE;\n },\n DEFAULT_CONFIGURATION_CONTEXT: function(state) {\n return state.DEFAULT_CONFIGURATION_CONTEXT;\n },\n LANG_STRING_RANGE: function(state) {\n return state.LANG_STRING_RANGE;\n },\n DEFAULT_HEADING: function(state) {\n return state.DEFAULT_HEADING;\n },\n CONFIG_SEARCH_SIZE(state) {\n return state.CONFIG_SEARCH_SIZE;\n },\n currentConfig(state) {\n return state.currentConfig;\n },\n configView(state) {\n return state.configView;\n },\n configList(state) {\n return state.configList;\n },\n defaultBrowserConfig(state) {\n return state.defaultBrowserConfig;\n },\n defaultBrowserConfigName(state) {\n return state.defaultBrowserConfigName;\n },\n localDefaultBrowserConfig(state) {\n return state.localDefaultBrowserConfig;\n },\n configBusy(state) {\n return state.configBusy;\n },\n availableConcepts(state) {\n return state.availableConcepts;\n },\n availableTypes(state) {\n return state.availableTypes;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nVue.use(Vuex);\n\n\nconst state = {\n crosswalkEnabled: true,\n userManagementEnabled: true,\n configurationsEnabled: true,\n searchByOwnerNameEnabled: true,\n pluginsEnabled: true,\n loginEnabled: true,\n legacyLoginEnabled: true,\n apiLoginEnabled: false,\n shareEnabled: true,\n shareLink: false,\n ownedByMe: false\n};\n\nconst mutations = {\n crosswalkEnabled(state, bool) {\n state.crosswalkEnabled = bool;\n },\n userManagementEnabled(state, bool) {\n state.userManagementEnabled = bool;\n },\n configurationsEnabled(state, bool) {\n state.configurationsEnabled = bool;\n },\n searchByOwnerNameEnabled(state, bool) {\n state.searchByOwnerNameEnabled = bool;\n },\n pluginsEnabled(state, bool) {\n state.pluginsEnabled = bool;\n },\n loginEnabled(state, bool) {\n state.loginEnabled = bool;\n },\n apiLoginEnabled(state, bool) {\n state.apiLoginEnabled = bool;\n },\n legacyLoginEnabled(state, bool) {\n state.legacyLoginEnabled = bool;\n },\n shareEnabled(state, bool) {\n state.shareEnabled = bool;\n },\n shareLink(state, bool) {\n state.shareLink = bool;\n },\n ownedByMe(state, bool) {\n state.ownedByMe = bool;\n }\n};\n\nconst actions = {\n\n};\n\nconst getters = {\n legacyLoginEnabled: function(state) {\n return state.legacyLoginEnabled;\n },\n apiLoginEnabled: function(state) {\n return state.apiLoginEnabled;\n },\n ownedByMe: function(state) {\n return state.ownedByMe;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n mutations,\n actions,\n getters\n};","import Vue from 'vue';\nimport Vuex from 'vuex';\nimport lode from './modules/lode.js';\nimport editor from './modules/editor.js';\nimport app from './modules/app.js';\nimport user from './modules/user.js';\nimport crosswalk from './modules/crosswalk.js';\nimport environment from './modules/environment.js';\nimport configuration from './modules/configuration.js';\nimport featuresEnabled from './modules/featuresEnabled.js';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n modules: {\n lode,\n editor,\n app,\n user,\n crosswalk,\n environment,\n featuresEnabled,\n configuration\n }\n});\n","/* (ignored) */","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicModal.vue?vue&type=style&index=0&id=704681ec&prod&lang=scss\"","// extracted by mini-css-extract-plugin","import Vue from 'vue';\nimport VueProgressBar from 'vue-progressbar';\nimport App from './App.vue';\nimport './scss/theme.scss';\nimport './scss/styles.scss';\nimport router from './router';\nimport Vuex from 'vuex';\nimport Clipboard from 'v-clipboard';\nimport store from './store/index.js';\nimport InfiniteLoading from 'vue-infinite-loading';\nimport VueResource from 'vue-resource';\n\nimport VueObserveVisibility from 'vue-observe-visibility';\nimport AsyncComputed from 'vue-async-computed';\n\nvar VueScrollTo = require('vue-scrollto');\n\nconst {fetch: originalFetch} = global;\n\nlet PENDING_REQUESTS = 0;\nconst MAX_REQUESTS_COUNT = 10;\nconst INTERVAL_MS = 10;\n\nglobal.fetch = async(...args) => {\n let [resource, config] = args;\n // request interceptor here\n if (PENDING_REQUESTS >= MAX_REQUESTS_COUNT) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(global.fetch(...args));\n }, INTERVAL_MS);\n });\n } else {\n PENDING_REQUESTS++;\n try {\n if (config != null && config.headers != null && Object.values(config.headers).length === 0) {\n delete config.headers;\n }\n const response = await originalFetch(resource, config);\n // response interceptor here\n return response;\n } finally {\n PENDING_REQUESTS = Math.max(0, PENDING_REQUESTS - 1);\n }\n }\n};\n\n\nrequire(\"cassproject\");\nglobal.UUID = require('pure-uuid');\n\nconst options = {\n color: '#68C8DB',\n failedColor: '#D74C44',\n thickness: '5px',\n transition: {\n speed: '0.2s',\n opacity: '0.6s',\n termination: 300\n },\n autoRevert: true,\n location: 'top',\n inverse: false\n};\n\nVue.use(VueProgressBar, options);\nVue.use(require('vue-moment'));\nVue.use(Vuex);\nVue.use(Clipboard);\nVue.use(VueScrollTo, {\n container: \"#framework\",\n duration: 500,\n easing: \"ease\",\n offset: -150,\n force: true,\n cancelable: true,\n onStart: false,\n onDone: false,\n onCancel: false,\n x: false,\n y: true\n});\nVue.use(InfiniteLoading);\nVue.use(VueResource);\nVue.use(VueObserveVisibility);\nVue.use(AsyncComputed);\n\n// directive for clicking outside elements and performing an action\n// add v-click-outside=\"method\" to parent element to do something\nVue.directive('click-outside', {\n bind: function(element, binding, vnode) {\n element.clickOutsideEvent = function(event) {\n if (!(element === event.target || element.contains(event.target))) {\n vnode.context[binding.expression](event);\n }\n };\n document.body.addEventListener('click', element.clickOutsideEvent);\n },\n unbind: function(element) {\n document.body.removeEventListener('click', element.clickOutsideEvent);\n }\n});\n\nEcRepository.caching = true;\nEcRepository.cachingL2 = true;\n\nVue.config.productionTip = false;\n// Vue.config.silent = true;\nVue.config.warnHandler = function(msg, vm, trace) {\n if (msg === 'Invalid prop: type check failed for prop \"clickToLoad\". Expected Boolean, got String with value \"true\".') return;\n if (msg === 'Avoid using non-primitive value as key, use string/number value instead.') return;\n if (msg === \"Duplicate keys detected: '[object Object]'. This may cause an update error.\") return;\n appError((\"[Vue warn]: \" + msg + trace));\n // `trace` is the component hierarchy trace\n};\n\nglobal.appLog = function(x) {\n /* eslint-disable no-console */\n if (process.env.NODE_ENV !== 'production') {\n // console.trace(x);\n console.log(x);\n }\n /* eslint-enable no-console */\n};\n\nglobal.appError = function(x) {\n /* eslint-disable no-console */\n if (process.env.NODE_ENV !== 'production') {\n console.error(x);\n }\n /* eslint-enable no-console */\n};\n\nvar queryParams = function() {\n if (window.document.location.search == null) { return {}; }\n var hashSplit = (window.document.location.search.split(\"?\"));\n if (hashSplit.length > 1) {\n var o = {};\n var paramString = hashSplit[1];\n var parts = (paramString).split(\"&\");\n for (var i = 0; i < parts.length; i++) {\n if (o[parts[i].split(\"=\")[0]]) {\n // Allow multiple values\n o[parts[i].split(\"=\")[0]] = [o[parts[i].split(\"=\")[0]]];\n o[parts[i].split(\"=\")[0]].push(decodeURIComponent(parts[i].replace(parts[i].split(\"=\")[0] + \"=\", \"\")));\n } else {\n o[parts[i].split(\"=\")[0]] = decodeURIComponent(parts[i].replace(parts[i].split(\"=\")[0] + \"=\", \"\"));\n }\n }\n return o;\n }\n return {};\n};\nwindow.queryParams = queryParams();\n\nwindow.app = new Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app');\n","/* (ignored) */","// extracted by mini-css-extract-plugin","/* (ignored) */","/* (ignored) */","\n\n\n\n\n","global.jsonld = require('jsonld');\n\n\nconst state = {\n schemata: {},\n isSavingProperty: false,\n isSavingThing: false,\n isAddingProperty: false,\n addingProperty: '',\n addingValues: [],\n addingRange: [],\n addingChecked: [],\n removeAddingValueAtIndex: null,\n schemataLookup: {},\n rawSchemata: {},\n schemaFallback: {},\n objectModel: {},\n competencySearchModalOpen: false,\n copyOrLink: false,\n numPropertyComponentsVisible: {},\n searchType: null,\n includeRelations: true\n};\nconst actions = {\n schemata({state, commit}, schema) {\n commit('setSchemata', schema);\n if (EcArray.isArray(schema.obj)) {\n commit('setEmptySchemataLookup', schema);\n for (var i = 0; i < schema.obj.length; i++) {\n let scheme = schema.obj[i];\n commit('setSchemataLookup', {'index': i, 'schema': schema});\n if (scheme[\"http://schema.org/domainIncludes\"] != null) {\n for (var domainType of scheme[\"http://schema.org/domainIncludes\"]) {\n if (state.objectModel[domainType[\"@id\"]] == null) {\n commit('setObjectModel', {'type': domainType, 'val': {}});\n }\n let om = state.objectModel[domainType[\"@id\"]];\n om[scheme[\"@id\"]] = scheme;\n }\n }\n }\n }\n },\n schemaFallback({state}, schema) {\n for (var i = 0; i < schema.length; i++) {\n let scheme = schema[i];\n state.schemaFallback[scheme[\"@id\"]] = schema[i];\n if (scheme[\"http://schema.org/domainIncludes\"] != null) {\n for (var domainType of scheme[\"http://schema.org/domainIncludes\"]) {\n if (state.objectModel[domainType[\"@id\"]] == null) {\n state.objectModel[domainType[\"@id\"]] = {};\n }\n let om = state.objectModel[domainType[\"@id\"]];\n om[scheme[\"@id\"]] = scheme;\n }\n }\n }\n }\n};\nconst mutations = {\n setIsSavingProperty(state, value) {\n state.isSavingProperty = value;\n },\n setIsSavingThing(state, value) {\n state.isSavingThing = value;\n },\n setIsAddingProperty(state, value) {\n state.isAddingProperty = value;\n },\n setAddingProperty(state, value) {\n state.addingProperty = value;\n },\n setAddingValues(state, values) {\n let newValues = [];\n if (Array.isArray(values)) {\n values.forEach((value) => {\n if (value) {\n let newValue = trimUrl(value);\n if (newValue) newValues.push(newValue);\n }\n });\n } else {\n if (values) {\n let newValue = trimUrl(values);\n if (newValue) newValues.push(newValue);\n }\n }\n state.addingValues = newValues;\n },\n addToAddingValues(state, value) {\n let newValue = trimUrl(value);\n if (!state.addingValues) {\n state.addingValues = [];\n }\n if (newValue) {\n state.addingValues.push(newValue);\n }\n },\n setAddingRange(state, value) {\n state.addingRange = value;\n },\n setAddingChecked(state, value) {\n state.addingChecked = value;\n },\n removeAddingValueAtIndex(state, value) {\n state.removeAddingValueAtIndex = value;\n },\n setSchemata(state, schema) {\n state.schemata[schema.id] = schema.obj;\n },\n setSchemataLookup(state, payload) {\n let i = payload.index;\n let schema = payload.schema;\n state.schemataLookup[schema.id][schema.obj[i][\"@id\"]] = schema.obj[i];\n },\n setEmptySchemataLookup(state, schema) {\n state.schemataLookup[schema.id] = {};\n },\n setObjectModel(state, payload) {\n let domainType = payload.type;\n let val = payload.val;\n state.objectModel[domainType[\"@id\"]] = val;\n },\n rawSchemata(state, schema) {\n state.rawSchemata[schema.id] = schema.obj;\n },\n competencySearchModalOpen(state, bool) {\n state.competencySearchModalOpen = bool;\n },\n copyOrLink(state, bool) {\n state.copyOrLink = bool;\n },\n incrementNumPropertyComponents(state, thingId) {\n if (!state.numPropertyComponentsVisible[thingId]) {\n state.numPropertyComponentsVisible[thingId] = 0;\n }\n state.numPropertyComponentsVisible[thingId]++;\n },\n decrementNumPropertyComponents(state, thingId) {\n state.numPropertyComponentsVisible[thingId]--;\n if (state.numPropertyComponentsVisible[thingId] === 0) {\n delete state.numPropertyComponentsVisible[thingId];\n }\n },\n searchType(state, type) {\n state.searchType = type;\n },\n includeRelations(state, bool) {\n state.includeRelations = bool;\n }\n};\nconst getters = {\n isSavingProperty(state) {\n return state.isSavingProperty;\n },\n isSavingThing(state) {\n return state.isSavingThing;\n },\n isAddingProperty(state) {\n return state.isAddingProperty;\n },\n addingProperty(state) {\n return state.addingProperty;\n },\n addingValues(state) {\n return state.addingValues;\n },\n addingRange(state) {\n return state.addingRange;\n },\n addingChecked(state) {\n return state.addingChecked;\n },\n removeAddingValueAtIndex(state) {\n return state.removeAddingValueAtIndex;\n },\n includeRelations(state) {\n return state.includeRelations;\n }\n};\n\nfunction trimUrl(url) {\n if (!url) {\n return undefined;\n }\n if (url === \"\" || (url[\"@value\"] && url[\"@value\"] === \"\")) {\n return undefined;\n }\n let trimmed = url;\n if (trimmed[\"@value\"] && typeof trimmed[\"@value\"] === \"string\" && trimmed[\"@value\"].endsWith(\"/\")) {\n trimmed[\"@value\"] = trimmed[\"@value\"].slice(0, trimmed[\"@value\"].length - 1);\n }\n if (trimmed[\"@value\"] && typeof trimmed[\"@value\"] === \"string\" && trimmed[\"@value\"].startsWith(\"/\")) {\n trimmed[\"@value\"] = trimmed[\"@value\"].slice(1);\n }\n if (trimmed && typeof trimmed === \"string\" && trimmed.endsWith(\"/\")) {\n trimmed = trimmed.slice(0, trimmed.length - 1);\n }\n if (trimmed && typeof trimmed === \"string\" && trimmed.startsWith(\"/\")) {\n trimmed = trimmed.slice(1);\n }\n return trimmed;\n}\n\njsonld.documentLoader = async function(url) {\n if (url in state.rawSchemata) {\n return {\n contextUrl: null, // this is for a context via a link header\n document: state.rawSchemata[url], // this is the actual document that was loaded\n documentUrl: url // this is the actual context URL after redirects\n };\n } else {\n var context;\n var xmlhttp = new XMLHttpRequest();\n xmlhttp.onreadystatechange = function() {\n if (this.readyState === 4 && this.status === 200) {\n context = JSON.parse(this.responseText);\n state.rawSchemata[originalUrl] = context;\n }\n };\n let originalUrl = url;\n let index = url.indexOf('schema.cassproject.org');\n let ending = \"\";\n if (url.substring(url.lastIndexOf('/')).indexOf('2') === -1) {\n ending = \"/index.json-ld\";\n }\n if (index !== -1) {\n url = url.substring(index);\n url = window.location.origin + window.location.pathname + url + ending;\n }\n xmlhttp.open(\"GET\", url, false);\n xmlhttp.setRequestHeader(\"Accept\", \"application/json\");\n xmlhttp.send();\n return {\n contextUrl: null, // this is for a context via a link header\n document: context, // this is the actual document that was loaded\n documentUrl: originalUrl // this is the actual context URL after redirects\n };\n }\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n};","import dateFormat from 'dateformat';\n\nexport default {\n data() {\n return {\n conceptCtids: null,\n conceptRegistryUrls: null\n };\n },\n computed: {\n ctids: function() {\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return null;\n }\n if (this.$store.getters['editor/queryParams'] && (this.$store.getters['editor/queryParams'].ceasnDataFields !== \"true\")) {\n return null;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@value\": this.getCTID(framework.shortId())}];\n if (framework.competency) {\n for (var i = 0; i < framework.competency.length; i++) {\n obj[framework.competency[i]] = [{\"@value\": this.getCTID(framework.competency[i])}];\n }\n }\n return obj;\n },\n registryURLs: function() {\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return null;\n }\n if (this.$store.getters['editor/queryParams'] && (this.$store.getters['editor/queryParams'].ceasnDataFields !== \"true\")) {\n return null;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@id\": this.ceasnRegistryUriTransform(framework.shortId())}];\n if (framework.competency) {\n for (var i = 0; i < framework.competency.length; i++) {\n obj[framework.competency[i]] = [{\"@id\": this.ceasnRegistryUriTransform(framework.competency[i])}];\n }\n }\n return obj;\n }\n },\n methods: {\n canEditAny: function(item) {\n if (this.isAdmin()) return true;\n if (item.canEditAny == null) return true;\n return item.canEditAny(EcIdentityManager.default.getMyPks());\n },\n isAdmin: function() {\n let adminKeys = window.repo.adminKeys;\n let userIds = EcIdentityManager.default.ids;\n if (!Array.isArray(adminKeys)) return false;\n if (!Array.isArray(userIds)) return false;\n for (let userId of userIds) {\n let userKey = userId.ppk.toPk().toPem();\n for (let adminKey of adminKeys) {\n if (userKey === adminKey) {\n return true;\n }\n }\n }\n return false;\n },\n getConceptCtids: async function() {\n this.conceptCtids = null;\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return;\n }\n var me = this;\n if (this.queryParams.ceasnDataFields !== \"true\") {\n return;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@value\": this.getCTID(framework.shortId())}];\n var subCtids = async function(ary) {\n for (var i = 0; i < ary.length; i++) {\n obj[ary[i]] = [{\"@value\": me.getCTID(ary[i])}];\n var concept = await EcConcept.get(ary[i]);\n if (concept[\"skos:narrower\"]) {\n await subCtids(concept[\"skos:narrower\"]);\n }\n }\n };\n if (framework[\"skos:hasTopConcept\"]) {\n await subCtids(framework[\"skos:hasTopConcept\"]);\n }\n this.conceptCtids = obj;\n },\n getConceptRegistryUrls: async function() {\n this.conceptRegistryUrls = null;\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n if (!framework || !framework.id) {\n return;\n }\n var me = this;\n if (this.queryParams.ceasnDataFields !== \"true\") {\n return;\n }\n var obj = {};\n obj[framework.shortId()] = [{\"@id\": this.ceasnRegistryUriTransform(framework.shortId())}];\n var subURLs = async function(ary) {\n for (var i = 0; i < ary.length; i++) {\n obj[ary[i]] = [{\"@value\": me.ceasnRegistryUriTransform(ary[i])}];\n var concept = await EcConcept.get(ary[i]);\n if (concept[\"skos:narrower\"]) {\n await subURLs(concept[\"skos:narrower\"]);\n }\n }\n };\n if (framework[\"skos:hasTopConcept\"]) {\n await subURLs(framework[\"skos:hasTopConcept\"]);\n }\n this.conceptRegistryUrls = obj;\n },\n spitEvent: function(message, id, page) {\n var framework = this.framework ? this.framework : this.$store.state.editor.framework;\n var selectedCompetency = this.$store.state.editor.selectedCompetency;\n let frameworkName = null;\n if (framework) {\n if (framework[\"dcterms:title\"]) {\n frameworkName = schema.Thing.getDisplayStringFrom(framework[\"dcterms:title\"]);\n } else {\n frameworkName = framework.getName();\n }\n }\n let compName = null;\n if (selectedCompetency) {\n if (selectedCompetency[\"skos:prefLabel\"]) {\n compName = schema.Thing.getDisplayStringFrom(selectedCompetency[\"skos:prefLabel\"]);\n } else {\n compName = selectedCompetency.getName();\n }\n }\n var evt = {\n message: message,\n changed: id,\n selectedFramework: framework == null ? null : framework.shortId(),\n selectedCompetency: selectedCompetency == null ? null : selectedCompetency.shortId(),\n selectedFrameworkObject: framework == null ? null : JSON.parse(framework.toJson()),\n selectedCompetencyObject: selectedCompetency == null ? null : JSON.parse(selectedCompetency.toJson()),\n selectedFrameworkName: frameworkName,\n selectedCompetencyName: compName,\n visiblePage: page\n };\n if (this.queryParams && this.queryParams.ceasnDataFields === \"true\") {\n if (framework != null) {\n if (framework.getGuid != null) {\n if (framework.getGuid().startsWith(\"ce-\")) {\n evt.selectedFrameworkCtid = framework == null ? null : framework.getGuid();\n } else if (framework.getGuid().matches(\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\")) {\n evt.selectedFrameworkCtid = framework == null ? null : \"ce-\" + framework.getGuid();\n } else {\n evt.selectedFrameworkCtid = \"ce-\" + new UUID(3, \"nil\", framework.shortId()).format();\n }\n }\n }\n if (selectedCompetency != null) {\n if (selectedCompetency.getGuid != null) {\n if (selectedCompetency.getGuid().startsWith(\"ce-\")) {\n evt.selectedCompetencyCtid = selectedCompetency == null ? null : selectedCompetency.getGuid();\n } else if (selectedCompetency.getGuid().matches(\"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\")) {\n evt.selectedCompetencyCtid = selectedCompetency == null ? null : \"ce-\" + selectedCompetency.getGuid();\n } else {\n evt.selectedCompetencyCtid = \"ce-\" + new UUID(3, \"nil\", this.framework.shortId() + selectedCompetency.shortId()).format();\n }\n }\n }\n }\n appLog(evt);\n if (parent != null) {\n if (this.queryParams && this.queryParams.origin != null && this.queryParams.origin !== '') {\n parent.postMessage(evt, this.queryParams.origin);\n }\n }\n },\n setDefaultLanguage: function() {\n let framework = this.framework;\n if (!framework) {\n framework = this.$store.getters['editor/framework'];\n }\n var defaultLanguage;\n if (framework && framework[\"schema:inLanguage\"]) {\n defaultLanguage = EcArray.isArray(framework[\"schema:inLanguage\"]) ? framework[\"schema:inLanguage\"][0] : framework[\"schema:inLanguage\"];\n } else if (framework && framework[\"ceasn:inLanguage\"]) {\n defaultLanguage = EcArray.isArray(framework[\"ceasn:inLanguage\"]) ? framework[\"ceasn:inLanguage\"][0] : framework[\"ceasn:inLanguage\"];\n } else if (framework && framework[\"dcterms:language\"]) {\n defaultLanguage = EcArray.isArray(framework[\"dcterms:language\"]) ? framework[\"dcterms:language\"][0] : framework[\"dcterms:language\"];\n } else if (navigator.language || navigator.userLanguage) {\n defaultLanguage = navigator.language || navigator.userLanguage;\n } else {\n defaultLanguage = \"en\";\n }\n this.$store.commit('editor/defaultLanguage', defaultLanguage);\n },\n get: function(server, service, headers, success, failure) {\n var url = EcRemote.urlAppend(server, service);\n url = EcRemote.upgradeHttpToHttps(url);\n var xhr = null;\n if ((typeof httpStatus) === \"undefined\") {\n xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n if (headers != null) {\n var keys = EcObject.keys(headers);\n for (var i = 0; i < keys.length; i++) {\n xhr.setRequestHeader(keys[i], headers[keys[i]]);\n }\n }\n var xhrx = xhr;\n xhr.onreadystatechange = function() {\n if (xhrx.readyState === 4 && xhrx.status === 200) {\n if (success != null) {\n success(xhrx.responseText);\n } else if (xhrx.readyState === 4) {\n if (failure != null) {\n failure(xhrx.status + \" \" + xhrx.responseText);\n }\n }\n }\n };\n xhr.onload = function() {\n if (xhr.status !== 200) {\n failure(xhr.status);\n }\n };\n xhr.onerror = function() {\n failure(\"Failed while sending request.\");\n };\n }\n if (xhr != null) {\n (xhr)[\"timeout\"] = EcRemote.timeout;\n }\n if ((typeof httpStatus) !== \"undefined\") {\n if (success != null) {\n success(JSON.stringify(httpGet(url)));\n }\n } else {\n xhr.send();\n }\n },\n resolveNameFromUrl: function(url) {\n this.get(url, null, null, function(data) {\n var name = null;\n if (data) {\n if (data[0] === \"<\") {\n return;\n }\n data = JSON.parse(data);\n if (data['ceterms:name']) {\n name = data['ceterms:name'];\n } else if (data['ceasn:competencyText']) {\n name = data['ceasn:competencyText'];\n } else if (data['name']) {\n name = data['name'];\n } else if (data['schema:name']) {\n name = data['schema:name'];\n } else if (data['title']) {\n name = data['title'];\n } else if (data['skos:prefLabel']) {\n name = data['skos:prefLabel'];\n } else if (data['title']) {\n name = data['title'];\n } else if (data['@graph'] && data['@graph'][0]) {\n if (data['@graph'][0]['ceterms:name']) {\n name = data['@graph'][0]['ceterms:name'];\n } else if (data['@graph'][0]['name']) {\n name = data['@graph'][0]['name'];\n } else if (data['@graph'][0]['schema:name']) {\n name = data['@graph'][0]['schema:name'];\n } else if (data['@graph'][0]['title']) {\n name = data['@graph'][0]['title'];\n } else if (data['@graph'][0]['skos:prefLabel']) {\n name = data['@graph'][0]['skos:prefLabel'];\n }\n }\n // If it's a langstring\n name = schema.Thing.getDisplayStringFrom(name);\n // If still object, display value\n if (EcObject.isObject(name)) {\n var langs = Object.keys(name);\n name = name[langs[0]];\n }\n }\n return name;\n }, function(error) {\n appLog(error);\n });\n },\n conditionalDelete: function(id, depth) {\n var me = this;\n (function(id, depth) {\n Task.asyncImmediate(function(callback) {\n if (depth === undefined || depth == null) depth = 0;\n if (id == null || id === undefined) {\n appLog(\"ID is undefined.\");\n }\n if (depth < 5) {\n EcFramework.search(window.repo, \"\\\"\" + id + \"\\\"\", async function(results) {\n if (results.length <= 0) {\n appLog(\"No references found for \" + id + \"... deleting.\");\n let obj = await EcRepository.get(id);\n window.repo.deleteRegistered(obj, function(success) {\n if (obj.type === \"Level\") {\n me.$store.commit('editor/refreshLevels', true);\n }\n callback();\n }, function(failure) {\n appLog(failure);\n callback();\n });\n } else {\n appLog(results.length + \" references found for \" + id + \"... Not deleting. Will see again in another second.\");\n callback();\n setTimeout(function() {\n me.conditionalDelete(id, depth + 1);\n }, 1000);\n }\n }, appError, {});\n } else {\n callback();\n }\n });\n })(id, depth);\n },\n selectButton: async function(selectedArray) {\n var ary = [];\n if (!selectedArray) {\n selectedArray = this.selectedArray;\n }\n for (var i = 0; i < selectedArray.length; i++) {\n if (this.queryParams.selectVerbose === \"true\" && this.$store.getters['editor/conceptMode'] !== true && this.$store.getters['editor/progressionMode'] !== true) {\n if (this.queryParams.selectExport === \"ctdlasn\") {\n var link;\n if (EcRepository.shouldTryUrl(selectedArray[i]) === false && selectedArray[i].indexOf(window.repo.selectedServer) === -1) {\n link = window.repo.selectedServer + \"ceasn/\" + EcCrypto.md5(selectedArray[i]);\n } else {\n link = selectedArray[i].replace(\"/data/\", \"/ceasn/\");\n }\n let success = await EcRemote.getExpectingObject(link);\n if (success) {\n ary.push(success);\n }\n } else {\n ary.push(JSON.parse((await EcCompetency.get(selectedArray[i])).toJson()));\n }\n } else if (this.queryParams.selectVerbose === \"true\") {\n ary.push(JSON.parse((await EcConcept.get(selectedArray[i])).toJson()));\n } else {\n ary.push(selectedArray[i]);\n }\n }\n if (this.queryParams.selectRelations === \"true\" && this.framework.relation) {\n for (var i = 0; i < this.framework.relation.length; i++) {\n var relation = await EcAlignment.get(this.framework.relation[i]);\n if (EcArray.has(selectedArray, relation.target)) {\n if (this.queryParams.selectVerbose === \"true\") {\n ary.push(JSON.parse((relation).toJson()));\n } else {\n ary.push(relation.shortId());\n }\n }\n }\n }\n var currentFramework = this.framework;\n if (this.queryParams.selectExport === \"ctdlasn\" && this.$store.getters['editor/conceptMode'] !== true && this.$store.getters['editor/progressionMode'] !== true) {\n if (this.framework != null) {\n var link;\n if (EcRepository.shouldTryUrl(this.framework.id) === false && this.framework.id.indexOf(window.repo.selectedServer) === -1) {\n link = window.repo.selectedServer + \"ceasn/\" + EcCrypto.md5(this.framework.shortId());\n } else {\n link = this.framework.id.replace(\"/data/\", \"/ceasn/\");\n }\n let success = await EcRemote.getExpectingObject(link);\n if (success) {\n // success = JSON.parse(success);\n if (success[\"@graph\"]) {\n currentFramework = success[\"@graph\"][0];\n }\n }\n }\n }\n var message = {\n message: \"selected\",\n selected: ary,\n type: ((this.$store.getters['editor/conceptMode'] === true || this.$store.getters['editor/progressionMode'] === true) ? 'Concept' : 'Competency'),\n selectedFramework: currentFramework\n };\n message = JSON.parse(JSON.stringify(message));\n appLog(message);\n parent.postMessage(message, this.queryParams.origin);\n },\n addLevel: async function(selectedCompetency, optionalLevelUrlOrName) {\n var c;\n var me = this;\n var framework = this.framework ? this.framework : this.$store.getters['editor/framework'];\n var initialLevels = framework.level ? framework.level.slice() : null;\n if (!optionalLevelUrlOrName || !optionalLevelUrlOrName.includes('http')) {\n c = new EcLevel();\n if (this.queryParams.newObjectEndpoint != null) {\n c.generateShortId(this.queryParams.newObjectEndpoint);\n } else {\n c.generateId(window.repo.selectedServer);\n }\n c[\"schema:dateCreated\"] = new Date().toISOString();\n c.name = (optionalLevelUrlOrName && optionalLevelUrlOrName !== \"\") ? optionalLevelUrlOrName : \"New Level\";\n c.competency = selectedCompetency;\n } else {\n optionalLevelUrlOrName = optionalLevelUrlOrName[0];\n var c = await EcRepository.get(optionalLevelUrlOrName);\n if (!c.competency) {\n c.competency = [];\n } else if (!EcArray.isArray(c.competency)) {\n c.competency = [c.competency];\n }\n c.competency.push(selectedCompetency);\n }\n framework[\"schema:dateModified\"] = new Date().toISOString();\n window.repo.saveTo(c, async function() {\n framework.addLevel(c.shortId());\n var edits = [];\n if (!optionalLevelUrlOrName || !optionalLevelUrlOrName.includes('http')) {\n edits.push({operation: \"addNew\", id: c.shortId()});\n }\n edits.push({operation: \"update\", id: framework.shortId(), fieldChanged: [\"level\"], initialValue: [initialLevels], changedValue: [framework.level]});\n me.$store.commit('editor/addEditsToUndo', edits);\n me.$store.commit('editor/framework', framework);\n if (me.$store.state.editor.private === true) {\n if (EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n }\n window.repo.saveTo(framework, function() {\n me.$store.commit('lode/setIsAddingProperty', false);\n me.$store.commit('editor/refreshLevels', true);\n }, appError);\n }, appError);\n },\n saveCheckedLevels: async function(selectedCompetency, checkedOptions, allOptions) {\n let competencyId = [];\n if (EcArray.isArray(selectedCompetency)) {\n competencyId = selectedCompetency;\n } else {\n competencyId.push(EcRemoteLinkedData.trimVersionFromUrl(selectedCompetency[\"@id\"]));\n }\n var initialLevels = this.framework.level ? this.framework.level.slice() : null;\n var frameworkChanged = false;\n var edits = [];\n var me = this;\n for (var i = 0; i < allOptions.length; i++) {\n if (!this.framework.level) {\n this.framework.level = [];\n }\n // If selected\n if (checkedOptions.indexOf(allOptions[i].val) !== -1) {\n var level = await EcLevel.get(allOptions[i].val);\n var initialComp = JSON.parse(JSON.stringify(level.competency));\n if (!EcArray.isArray(level.competency)) {\n level.competency = level.competency == null ? [] : [level.competency];\n }\n let levelChanged = false;\n for (let each in competencyId) {\n if (level.competency.indexOf(competencyId[each]) === -1) {\n level.competency.push(competencyId[each]);\n levelChanged = true;\n }\n }\n if (levelChanged) {\n edits.push({operation: \"update\", id: level.shortId(), fieldChanged: [\"competency\"], initialValue: [initialComp], changedValue: [level.competency]});\n window.repo.saveTo(level, function() {\n me.$store.commit('editor/refreshLevels', true);\n }, appError);\n }\n if (this.framework.level.indexOf(level.shortId()) === -1) {\n this.framework.addLevel(level.shortId());\n frameworkChanged = true;\n }\n } else {\n // If not selected\n var level = await EcLevel.get(allOptions[i].val);\n var initialComp = JSON.parse(JSON.stringify(level.competency));\n let levelChanged = false;\n for (let each in competencyId) {\n if (level.competency && level.competency.indexOf(competencyId[each]) !== -1) {\n EcArray.setRemove(level.competency, competencyId[each]);\n levelChanged = true;\n }\n }\n if (levelChanged) {\n edits.push({operation: \"update\", id: level.shortId(), fieldChanged: [\"competency\"], initialValue: [initialComp], changedValue: [level.competency]});\n window.repo.saveTo(level, function() {\n me.$store.commit('editor/refreshLevels', true);\n }, appError);\n }\n // If level doesn't have any competencies attached, remove it from the framework.\n if ((!level.competency || (level.competency && level.competency.length === 0)) && this.framework.level.indexOf(level.shortId()) !== -1) {\n EcArray.setRemove(this.framework.level, level.shortId());\n frameworkChanged = true;\n }\n }\n }\n if (frameworkChanged) {\n edits.push({operation: \"update\", id: this.framework.shortId(), fieldChanged: [\"level\"], initialValue: [initialLevels], changedValue: [this.framework.level]});\n this.saveFramework();\n }\n this.$store.commit('editor/addEditsToUndo', edits);\n this.$store.commit('lode/setAddingChecked', []);\n this.$store.commit('lode/setIsAddingProperty', false);\n },\n saveFramework: async function() {\n this.framework[\"schema:dateModified\"] = new Date().toISOString();\n var framework = this.framework;\n this.$store.commit('editor/framework', framework);\n if (this.$store.state.editor.private === true && EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n window.repo.saveTo(framework, function() {}, appError);\n },\n removeLevelFromFramework: async function(levelId) {\n var initialLevels = this.framework.level ? this.framework.level.slice() : null;\n this.framework.removeLevel(levelId);\n var level = await EcRepository.get(levelId);\n this.$store.commit('editor/addEditsToUndo', [\n {operation: \"delete\", obj: level},\n {operation: \"update\", id: this.framework.shortId(), fieldChanged: [this.framework.level], initialValue: [initialLevels], changedValue: [this.framework.level]}\n ]);\n this.conditionalDelete(levelId);\n this.saveFramework();\n this.$store.commit('editor/refreshLevels', true);\n },\n addRelationsToFramework: async function(selectedCompetency, property, values) {\n if (values.length > 0) {\n selectedCompetency = await EcRepository.get(selectedCompetency);\n await this.addAlignments(values, selectedCompetency, property);\n }\n },\n addAlignments: async function(targets, thing, relationType, allowSave) {\n if (this.$store.getters['editor/queryParams'].concepts === \"true\" || this.$store.getters['editor/conceptMode'] === true || this.$store.getters['editor/progressionMode'] === true) {\n return this.addConceptAlignments(targets, thing, relationType);\n }\n let urlProperties = [\n \"ceasn:knowledgeEmbodied\",\n \"ceasn:skillEmbodied\",\n \"ceasn:taskEmbodied\",\n \"ceasn:abilityEmbodied\",\n \"ceasn:comprisedOf\",\n \"ceasn:derivedFrom\",\n \"ceasn:inferredCompetency\",\n \"ceasn:isVersionOf\",\n \"ceasn:alignTo\",\n \"ceasn:alignFrom\"\n ];\n if (urlProperties.includes(relationType)) {\n // This property is attached to competency, not a relation attached to framework\n return this.addRelationAsCompetencyField(targets, thing, relationType, allowSave);\n }\n return new Promise(async(resolve, reject) => {\n var framework = this.$store.state.editor.framework;\n var edits = [];\n var initialRelations = framework.relation ? framework.relation.slice() : null;\n for (var i = 0; i < targets.length; i++) {\n var r = new EcAlignment();\n if (this.$store.getters['editor/queryParams'].newObjectEndpoint != null) {\n r.generateShortId(this.$store.getters['editor/queryParams'].newObjectEndpoint);\n } else {\n r.generateId(window.repo.selectedServer);\n }\n edits.push({operation: \"addNew\", id: r.shortId()});\n r[\"schema:dateCreated\"] = new Date().toISOString();\n r.target = EcRemoteLinkedData.trimVersionFromUrl(targets[i]);\n if (thing.id) {\n r.source = thing.shortId();\n } else {\n r.source = EcRemoteLinkedData.trimVersionFromUrl(thing[\"@id\"]);\n }\n if (r.target === r.source) {\n return;\n }\n r.relationType = relationType;\n if (r.relationType === \"broadens\") {\n var dosedo = r.target;\n r.target = r.source;\n r.source = dosedo;\n r.relationType = \"narrows\";\n }\n if (EcIdentityManager.default.ids.length > 0) {\n r.addOwner(EcIdentityManager.default.ids[0].ppk.toPk());\n }\n if (framework.owner && framework.owner.length > 0) {\n for (var j = 0; j < framework.owner.length; j++) {\n var owner = framework.owner[j];\n r.addOwner(EcPk.fromPem(owner));\n }\n }\n if (framework.reader && framework.reader.length > 0) {\n for (var j = 0; j < framework.reader.length; j++) {\n var reader = framework.reader[j];\n r.addReader(EcPk.fromPem(reader));\n }\n }\n if (this.$store.state.editor.private === true) {\n r = await EcEncryptedValue.toEncryptedValue(r);\n }\n await new Promise((res, rej) => {\n window.repo.saveTo(r, res, rej);\n });\n if (thing.type === 'Concept') {\n if (framework.relation == null) {\n framework.relation = [];\n }\n let isNew = true;\n let idx = 0;\n while (isNew && idx < framework.relation.length) {\n if (EcRemoteLinkedData.trimVersionFromUrl(framework.relation[idx]).equals(r.id)) {\n isNew = false;\n }\n idx++;\n }\n if (isNew) {\n framework.relation.push(r.id);\n }\n } else {\n framework.addRelation(r.id);\n }\n }\n edits.push({operation: \"update\", id: framework.shortId(), fieldChanged: [\"relation\"], initialValue: [initialRelations], changedValue: [framework.relation]});\n this.$store.commit('editor/addEditsToUndo', edits);\n this.$store.commit('editor/framework', framework);\n if (this.$store.state.editor.private === true && EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n window.repo.saveTo(framework, resolve, reject);\n });\n },\n addRelationAsCompetencyField: async function(targets, thing, relationType, allowSave) {\n return new Promise(async(resolve, reject) => {\n var initialValue = thing[relationType] ? thing[relationType].slice() : null;\n for (var i = 0; i < targets.length; i++) {\n if (thing[relationType] == null) {\n thing[relationType] = [];\n }\n thing[relationType].push(targets[i]);\n }\n this.$store.commit('editor/addEditsToUndo', [{operation: \"update\", id: thing.shortId(), fieldChanged: [relationType], initialValue: [initialValue], changedValue: [thing[relationType]]}]);\n thing[\"schema:dateModified\"] = new Date().toISOString();\n if (this.$store.state.editor.private === true) {\n if (EcEncryptedValue.encryptOnSaveMap[thing.id] !== true) {\n thing = await EcEncryptedValue.toEncryptedValue(thing);\n }\n }\n window.repo.saveTo(thing, resolve, reject);\n });\n },\n removeRelationFromFramework: async function(source, property, target) {\n return new Promise((resolve, reject) => {\n var me = this;\n var initialRelations = this.framework.relation ? this.framework.relation.slice() : null;\n var edits = [];\n new EcAsyncHelper().each(this.framework.relation, function(relation, callback) {\n EcAlignment.get(relation, function(r) {\n if (property === \"broadens\") {\n if (r.target === source && r.source === target && r.relationType === \"narrows\") {\n me.framework.removeRelation(r.shortId());\n edits.push({operation: \"delete\", obj: r});\n me.conditionalDelete(r.shortId());\n callback();\n } else {\n callback();\n }\n } else if (r.source === source && r.target === target && r.relationType === property) {\n me.framework.removeRelation(r.shortId());\n edits.push({operation: \"delete\", obj: r});\n me.conditionalDelete(r.shortId());\n callback();\n } else {\n callback();\n }\n }, callback);\n }, async function() {\n var framework = me.framework;\n edits.push({operation: \"update\", id: framework.shortId(), fieldChanged: [\"relation\"], initialValue: [initialRelations], changedValue: [framework.relation]});\n me.$store.commit('editor/framework', framework);\n me.$store.commit('editor/addEditsToUndo', edits);\n if (me.$store.state.editor.private === true && EcEncryptedValue.encryptOnSaveMap[framework.id] !== true) {\n framework = await EcEncryptedValue.toEncryptedValue(framework);\n }\n window.repo.saveTo(framework, resolve, reject);\n });\n });\n },\n ceasnRegistryUriTransform: function(uri) {\n var endpoint = null;\n if (this.$store.getters['editor/queryParams'] && (this.$store.getters['editor/queryParams'].newObjectEndpoint)) {\n endpoint = this.queryParams.newObjectEndpoint;\n }\n if (endpoint == null) {\n return uri;\n }\n if (uri.startsWith(endpoint)) {\n return uri;\n }\n var ctid = this.getCTID(uri);\n if (endpoint.indexOf(\"ce-\") !== -1) {\n ctid = ctid.substring(3);\n }\n return endpoint + ctid;\n },\n getCTID: function(uri) {\n var uuid = null;\n var parts = EcRemoteLinkedData.trimVersionFromUrl(uri).split(\"/\");\n uuid = parts[parts.length - 1];\n uri = EcRemoteLinkedData.trimVersionFromUrl(uri);\n if (!uuid.matches(\"^(ce-)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\")) {\n uuid = new UUID(3, \"nil\", uri).format();\n }\n if (uuid.indexOf(\"ce-\") === -1) {\n uuid = \"ce-\" + uuid;\n }\n return uuid;\n },\n canViewCommentsCurrentFramework: function() {\n // TODO expand on this\n let lop = this.$store.state.user.loggedOnPerson;\n if (lop && lop.id && lop.id !== '') return true;\n else return false;\n },\n canAddCommentsCurrentFramework: function() {\n // TODO expand on this\n let lop = this.$store.state.user.loggedOnPerson;\n if (lop && lop.id && lop.id !== '') return true;\n else return false;\n },\n toPrettyDateString: function(dateInMilliseconds) {\n try {\n let d = new Date(dateInMilliseconds);\n return dateFormat(d, \"mm/dd/yy, h:MM:ss TT\");\n } catch (err) {\n return 'unknown';\n }\n }\n }\n};","/* (ignored) */","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin"],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.8edea742.js.map.gz b/js/app.8edea742.js.map.gz new file mode 100644 index 000000000..6e9cfcdc0 Binary files /dev/null and b/js/app.8edea742.js.map.gz differ diff --git a/js/app.b477de77.js.map.gz b/js/app.b477de77.js.map.gz deleted file mode 100644 index aa44bb401..000000000 Binary files a/js/app.b477de77.js.map.gz and /dev/null differ