Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

The current aim of this extensions is to accommodate two groups of modifications:

...

extending the interface to accommodate additional functionality without needing to deal with the internals.

Plugin structure

Image Modified

plugins folder

Each folder on this folder is a ELN UI extension.

Each extension currently contains a single file with name "plugin.js".

config.js file

Contains a section called  PLUGINS_CONFIGURATION indicating the plugins to be loaded from the plugins folder.

Code Block
languagejs
var PLUGINS_CONFIGURATION = {
    extraPlugins : ["life-sciences", "flow", "microscopy"]
}

plugin.js file

Contains the actual source of the plugin, we can distinguish three clear sections/patterns on the skeleton of the interface:

...

Source Code Examples (plugin.js)

Configuration Only Extensions

An example with only type configurations extensions is show below.

Code Block
languagejs
function MyTechnology() {
   this.init();
}

$.extend(MyTechnology.prototype, ELNLIMSPlugin.prototype, {
   init: function() {
   
   },
   experimentTypeDefinitionsExtension : {
		"FOLDER": {
			"TOOLBAR": { CREATE: false, FREEZE: false, EDIT: false, MOVE: false, DELETE: false, UPLOAD_DATASET: false, UPLOAD_DATASET_HELPER: false, EXPORT_ALL: false, EXPORT_METADATA: true }
		}
   },
   sampleTypeDefinitionsExtension : {
   		"SAMPLE_TYPE" : {
			"TOOLBAR": { CREATE : true, EDIT : true, FREEZE : true, MOVE : true, COPY: true, DELETE : true, PRINT: true, HIERARCHY_GRAPH : true, HIERARCHY_TABLE : true, UPLOAD_DATASET : true, UPLOAD_DATASET_HELPER : true, EXPORT_ALL : true, EXPORT_METADATA : true, TEMPLATES : true, BARCODE : true },
	   		"SHOW" : false,
	    	"SAMPLE_CHILDREN_DISABLED": false,
			"SAMPLE_CHILDREN_ANY_TYPE_DISABLED" : false,
          	"SAMPLE_PARENTS_DISABLED": false,
			"SAMPLE_PARENTS_ANY_TYPE_DISABLED": true,
			"SAMPLE_PARENTS_HINT": [{
    			"LABEL": "Parent Label",
    			"TYPE": "PARENT_TYPE",
    			"ANNOTATION_PROPERTIES": []
			}],
			"SAMPLE_CHILDREN_HINT" : [{
				"LABEL": "Children Label",
    			"TYPE": "CHILDREN_TYPE",
				"MIN_COUNT" : 0,
    			"ANNOTATION_PROPERTIES": [{"TYPE" : "ANNOTATION.SYSTEM.COMMENTS", "MANDATORY" : false }]
			}],
   			"ENABLE_STORAGE" : false,
   			"SHOW_ON_NAV": false,
    		"SHOW_ON_NAV_FOR_PARENT_TYPES": undefined,
			extraToolbar : undefined
		},
   },
   dataSetTypeDefinitionsExtension : {
   		"DATASET_TYPE" : {
			"TOOLBAR": { EDIT : true, FREEZE : true, MOVE : true, ARCHIVE : true, DELETE : true, HIERARCHY_TABLE : true, EXPORT_ALL : true, EXPORT_METADATA : true },
			"DATASET_PARENTS_DISABLED" : false,
			extraToolbar : undefined
		},
   }
});

profile.plugins.push(new MyTechnology());

Toolbar Extensions

An example with only toolbar extensions is shown below, variables with a dollar sign '$' indicate they are jquery components:

Code Block
languagejs
function MyTechnology() {
   this.init();
}

$.extend(MyTechnology.prototype, ELNLIMSPlugin.prototype, {
   init: function() {
   
   },
   sampleTypeDefinitionsExtension : {
   		"SAMPLE_TYPE" : {
			extraToolbar : function(mode, sample) {
				var toolbarModel = [];
				if(mode === FormMode.VIEW) {
    				var $demoButton = FormUtil.getButtonWithIcon("glyphicon-heart", function () {
						//This empty function could be a call to do something in particular
					});
    				toolbarModel.push({ component : $demoButton, tooltip: "Demo" });
				}
				return toolbarModel;
			}
		},
   },
   dataSetTypeDefinitionsExtension : {
   		"DATASET_TYPE" : {
			extraToolbar : function(mode, dataset) {
				var toolbarModel = [];
				if(mode === FormMode.VIEW) {
    				var $demoButton = FormUtil.getButtonWithIcon("glyphicon-heart", function () { 
				 		//This empty function could be a call to do something in particular
					});
    				toolbarModel.push({ component : $demoButton, tooltip: "Demo" });
				}
				return toolbarModel;
			}
		},
   }
});

profile.plugins.push(new MyTechnology());

Extra Views as Utilities

Please check the provided example: https://sissource.ethz.ch/sispub/openbis/-/blob/master/ui-eln-lims/src/core-plugins/eln-lims/1/as/webapps/eln-lims/html/plugins/template-extra-utilities/plugin.js

...