--- /dev/null
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>MKWS demo: Multiple autosearching widgets get their own teams</title>
+ <link rel="stylesheet" type="text/css" href="mkws-widget-reference.css" />
+ <script type="text/javascript">
+ var mkws_config = { service_proxy_auth: "//mkws.indexdata.com/service-proxy-testauth" };
+ </script>
+ <!-- <script type="text/javascript" src="//mkws.local/mkws-complete.js"></script> -->
+ <script type="text/javascript" src="//mkws.indexdata.com/mkws-complete.js"></script>
+ </head>
+ <body>
+ <div class='mkwsReference' autosearch='one' sentences='1'>result will appear here</div>
+ <div class='mkwsReference' autosearch='two' sentences='1'>result will appear here</div>
+ <div class='mkwsReference' autosearch='three' sentences='1'>result will appear here</div>
+ <div class='mkwsReference' sentences='1'>result will appear here</div>
+ </body>
+</html>
}
}
- if (!teamName) teamName = "AUTO";
+ // Widgets without a team are on team "AUTO"
+ if (!teamName) {
+ teamName = "AUTO";
+ // Autosearch widgets don't join team AUTO if there is already an
+ // autosearch on the team or the team has otherwise gotten a query
+ if (node.hasAttribute("autosearch")) {
+ if (mkws.autoHasAuto ||
+ mkws.teams["AUTO"] && mkws.teams["AUTO"].config["query"]) {
+ log("AUTO team already has a query, using unique team");
+ teamName = "UNIQUE";
+ }
+ mkws.autoHasAuto = true;
+ }
+ }
+
+ // Widgets on team "UNIQUE" get a random team
+ if (teamName === "UNIQUE") {
+ teamName = Math.floor(Math.random() * 100000000).toString();
+ }
+
callback.call(node, teamName, type);
}
function init(rootsel) {
+ mkws.autoHasAuto = false;
if (!rootsel) var rootsel = ':root';
var saved_config;
if (typeof mkws_config === 'undefined') {
var m_paz; // will be initialised below
var m_templateText = {}; // widgets can register templates to be compiled
var m_template = {}; // compiled templates, from any source
- var m_config = mkws.objectInheritingFrom(mkws.config);
var m_widgets = {}; // Maps widget-type to array of widget objects
var m_gotRecords = false;
+
+ var config = mkws.objectInheritingFrom(mkws.config);
+ that.config = config;
that.toString = function() { return '[Team ' + teamName + ']'; };
that.currentRecordId = function() { return m_currentRecordId; };
that.currentRecordData = function() { return m_currentRecordData; };
that.filters = function() { return m_filterSet; };
- that.config = function() { return m_config; };
// Accessor methods for individual widgets: writers
that.set_sortOrder = function(val) { m_sortOrder = val };
log("making new widget team");
- m_sortOrder = m_config.sort_default;
- m_perpage = m_config.perpage_default;
+ m_sortOrder = config.sort_default;
+ m_perpage = config.perpage_default;
// create a parameters array and pass it to the pz2's constructor
// then register the form submit event with the pz2.search function
// autoInit is set to true on default
m_paz = new pz2({ "windowid": teamName,
- "pazpar2path": m_config.pazpar2_url,
- "usesessions" : m_config.use_service_proxy ? false : true,
+ "pazpar2path": config.pazpar2_url,
+ "usesessions" : config.use_service_proxy ? false : true,
"oninit": onInit,
"onbytarget": onBytarget,
"onstat": onStat,
- "onterm": (m_config.facets.length ? onTerm : undefined),
+ "onterm": (config.facets.length ? onTerm : undefined),
"onshow": onShow,
"onrecord": onRecord,
"showtime": 500, //each timer (show, stat, term, bytarget) can be specified this way
- "termlist": m_config.facets.join(',')
+ "termlist": config.facets.join(',')
});
log("created main pz2 object");
function newSearch(query, sortOrder, maxrecs, perpage, limit, targets, torusquery) {
log("newSearch: " + query);
- if (m_config.use_service_proxy && !mkws.authenticated) {
+ if (config.use_service_proxy && !mkws.authenticated) {
alert("searching before authentication");
return;
}
team: team,
type: type,
node: $(node),
- config: mkws.objectInheritingFrom(team.config())
+ config: mkws.objectInheritingFrom(team.config)
};
function log(s) {
var that = this;
var query = this.config.autosearch;
if (query) {
- var old = this.team.config().query;
+ var old = this.team.config.query;
if (!old) {
// Stash this for subsequent inspection
- this.team.config().query = query;
+ this.team.config.query = query;
} else if (old === query) {
this.log("duplicate autosearch: '" + query + "': ignoring");
return;